Тема: String to int
Показать сообщение отдельно
Старый 18.07.2013, 12:02   #9
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Ответ: String to int

Нуу, например:
int L=strlen(str)-1;
    bool Minus=(str[0]=='-');
    int S=0;
    for(int i=L,mul=1;i>=Minus;i--,mul*=10)
        S+=((str[i]-48)*mul);
    S*=1-2*Minus;
Студентам могут попасться дополнительные детали: наличие буквенного мусора в числе, формальных знаков в начале (+) и т.п. Т.е. можно придумать оптимизацию под конкретику (тот же 1-2* вполне можно заменить тернарной конструкцией). Наиболее распростраённые промахи:
1) перебор от начала к концу строки: придётся посчитать тяжёлый множитель через pow, который на каждой итерации ещё и делить на 10 (хотя умножение - при движении в другую сторону - будет быстрее);
2) неиспользование прошлых результатов: вычисление множителя через pow на каждой итерации.
Или вот задание:
генерировать имена файлов типа
file000.bmp,file001.bmp...
Некоторые тоже через itoa фигачат, каждую итерацию теребя дополнительные буферы и делая стркаты, хотя это можно сделать простой манипуляцией, переделывая один буфер.
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
pozitiffcat (18.07.2013)