Тема: String to int
Показать сообщение отдельно
Старый 18.07.2013, 14:38   #12
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: 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;
не читабельно. особенно вот это: for(int i=L,mul=1;i>=Minus;i--,mul*=10)
можно i вообще выкинуть.
for(int mul=1;L>=Minus;L--,mul*=10)

хотя читабельность много важнее минимально числа строчек. я бы вообще написал как-то так:

int L=strlen(str)-1;
bool Minus=(str[0]=='-');
int S=0, mul = 1, first_number = Minus?1:0;

while(L>first_number)
{
        S+=((str[L]-'0')*mul);
	--L;
	mul *= 10;
}

if(minus)
	S = -S;
да, тут есть по сути лишние строчки, типа first_number = Minus?1:0. которые делают совершенно лишнюю работу. но, если это не глубоко в ядре, то читабельность важнее.

Platon опередил. вот его вариант в разы читабельне, имхо.
(Offline)
 
Ответить с цитированием