Итак, в качестве затравки одна довольно тривиальная задачка (крутым гуру просьба не беспокоиться
, а вот те, кому интересно — дерзайте).
Задача:
Написать функцию, которая конвертирует строку (char*) в число (int), то есть реализацию
atoi. Прототип функции:
int new_atoi(const char* string);
Условия:
0. Язык программирования — С/С++.
1. Запрещается пользоваться
любыми библиотечными функциями (типа strlen и пр.), а также сторонними классами и иже с ними. В двух словах, задача должна решаться встроенными средствами языка С/С++.
2. Пробельные символы в начале строки (пробел и символ табуляции — \t) опускаются.
3. Знак числа должен сохраняться.
4. Возвращаемое значение — либо 0 в случае ошибки, либо часть числа до момента встречи ошибки (например, если строка содержит значение "1024u78", то возвращаемым значением будет число 1024
5. Передаваемая строка содержит числа в десятичном формате.
Набор тестов:
new_atoi("12345") = 12345
new_atoi("22345") = 22345
new_atoi("-12345") = -12345
new_atoi("--12345") = 0
new_atoi("+12345") = 12345
new_atoi(" 12345") = 12345
new_atoi(" 12345 ") = 12345
new_atoi("\t12345") = 12345
new_atoi(NULL) = 0
new_atoi("-r12345") = 0
new_atoi("123w45") = 123
new_atoi("a12345") = 0
Дерзайте. За лучшую реализацию — приз (более интересная задача)