+380 57 755 34 05 team@fulcrum.software

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

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

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

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

Критерии оценки Fulcrum Software:

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

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

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

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

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

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

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

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