Найти - Пользователи
Полная версия: На чем вы пишите высоконагруженные части системы: C++ или Cython?
Начало » Python для экспертов » На чем вы пишите высоконагруженные части системы: C++ или Cython?
1 2 3
py.user.next
Sanya28
Как юнит- тесты помогут запустить отладку двух- уровневой системы кода?
Они проконтролируют, что ошибок нет и отладка не нужна. Просто тот, кто долго сидит в отладчике в своём собственном коде, вызывает сомнение в компетентности, так как это большие затраты по времени и чаще всего впустую.
Sanya28
py.user.next
Они проконтролируют, что ошибок нет и отладка не нужна. Просто тот, кто долго сидит в отладчике в своём собственном коде, вызывает сомнение в компетентности, так как это большие затраты по времени и чаще всего впустую.

Это справедливо для “высокоуровневого” кода: как правило это создание объектов и вызов их методов. На С/С++ же как правило пишут низкоуровневые алгоритмы: непосредственно циклы обработки данных, которые могут быть очень сложными и ответ: “Не работает” не позволит идентифицировать и исправить ошибку.
py.user.next
Sanya28
На С/С++ же как правило пишут низкоуровневые алгоритмы: непосредственно циклы обработки данных, которые могут быть очень сложными
Приведи конкретный пример такого кода, в котором необходимо сидеть в отладчике.
Sanya28
py.user.next
Приведи конкретный пример такого кода, в котором необходимо сидеть в отладчике.

А зачем давать готовый ответ?

Пожалуйста, напишите функцию, которая преобразует значение лежащее по указателю char* p в число. Причем следом за числом могут быть нечисловые символы и они должны быть отброшены. Например:
char *p = "134,923&srk"
char *p = "-15,2fsd"

Будет интересно посмотреть на ваш профессионализм.
py.user.next
Sanya28
char *p = "134,923&srk"
Вообще-то строковой литерал нельзя в указатель на char сохранять. Это сразу тебя выдаёт с потрохами. Там ещё точка с запятой должна быть в конце оператора, так как она является частью оператора, а не разделителем, как в Паскале.

Sanya28
Пожалуйста, напишите функцию, которая преобразует значение лежащее по указателю char* p в число.
Для начала нужно написать юнит-тест. Ты знаешь, как писать юнит-тесты для кода на C? Конечно же нет! Знал бы, не сидел бы в отладчике.

И вот когда юнит-тест готов и проверяет эту функцию, тогда и можно писать её содержимое.

Внутри функции:
1. Прими указатель на строку.
2. Скопируй строку во временный массив.
3. Замени во временном массиве первую запятую на точку.
4. Прочитай число из строки в выходной массив с помощью функций sscanf() и sprintf().
5. Верни из функции указатель на выходной массив.

После этого у тебя будет на выходе массив с очищенным числом. Вызов функции можно вложить в вызов функции atof(). Также можно возвращать не указатель на полученный массив, а целое число - код ошибки. Если преобразование не удалось, код ошибки может показать, что именно не удалось сделать в процессе преобразования.

И всё это проверяется юнит-тестами. Ты ни разу не заходишь в отладчик.
Sanya28
py.user.next, я жду от вас код.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB