Реализация функции atoi()

Опубликовано Aug 29, 2011 в Массивы и строки | 12 коммент.

, ,

Напишите свою реализацию функции преобразования строки в число

int my_atoi(const char*  src)
{
  int result;
  // ваш код
  return result;
}

Цель данного задания: быстрая (до 20-ти минут) проверка базовых знаний С++ – циклы и работа со строками.
Время: до 20-ти минут
Формат выполнения: код пишется на листике, без доступа к документации

Если данная задача вам кажется слишком простой и не информативной для процедуры собеседования программиста С++, рекомендуем познакомиться с нашими критериями оценки.

Критерии оценки FulcrumWeb:

Прежде всего кандидат должен убедиться в полноте и однозначности постановки задачи.

В задаче сказано реализовать функцию преобразования, при этом название функции напоминает стандартную функцию С – atoi(). Если вам не знакома точная спецификация этой функции и принцип обработки ошибок – необходимо это уточнить.

Мы ожидаем услышать следующие вопросы:

  1. Что должна возвращать функция, если ее аргумент NULL  или вовсе не является числом.
  2. Каково должно быть поведение функции, если аргумент начинается с чисел, но заканчивается другими символами, например, “123hello”
  3. Какое значение или exception должна  возвращать функция, если ее значение больше диапазона, допустимого типом данных int
  4. Необходима ли поддержка разных платформ – 32 и 64 бита
  5. В какой системе исчисления должна работать эта функция? достаточно ли 10-тичной?
  6. Необходима ли поддержка отрицательных чисел? или результат “-1″ можно использовать для обозначения ошибки выполнения.
  7. нужно ли игнорировать whitespaces в начале строки, если да, то какие символы можно подразумевать под whitespaces (пробел, таб)?

После получения наших ответов мы ожидаем от вас реализации тела функции в течении 10-25 минут.

Оценка результатов:

Начинающему программисту (без опыта) мы простим полное отсутствие вопросов к постановке задачи, но, надеемся не встретить в реализации функции вызова математической функции возведения в степень pow().

От программистов с опытом работы мы ожидаем услышать хотя бы некоторые из перечисленных выше вопросов и безопасную реализацию, содержащую базовую обработку ошибок.