2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 C++ строки
Сообщение22.12.2009, 09:14 
Подскажите как сложить числа из строки, например.
есть строка
char *str="j1h2kjhjk7";
надо
cout << str[1]+str[3]+str[9];

 
 
 
 Re: C++ строки
Сообщение22.12.2009, 12:01 
Аватара пользователя
Например примерно так:

Используется синтаксис C++
int s = 0;
for(char* p = str; p[0]; ++p)
    if( p[0] >= '0' && p[0] <= '9' )
        s += p[0]-'0';
cout << s;
 


-- Вт дек 22, 2009 12:18:01 --

Тонкое место в этом коде - знание того, что цифры в кодовой таблице следуют от 0 до 9 подряд. Если нужно сделать идеально переносимую процедуру, которая не сломается, если это вдруг будет не так, то нужно поступать аккуратнее. Но не думаю, что это в данном случае реально требуется.

 
 
 
 Re: C++ строки
Сообщение28.12.2009, 18:09 
2PAV
Цитата:
нужно поступать аккуратнее

Например, просто используя стандартную функцию int isdigit(int).

 
 
 
 Re: C++ строки
Сообщение30.12.2009, 23:03 
PAV в сообщении #274037 писал(а):
Например примерно так:

Используется синтаксис C++
int s = 0;
for(char* p = str; p[0]; ++p)
    if( p[0] >= '0' && p[0] <= '9' )
        s += p[0]-'0';
cout << s;
 


Если в вопросе не ошибка, и нужно сложить именно числа, а не цифры, тогда будет несколько сложнее, что то типа
Используется синтаксис C++
s1 *= 10;
s1 += p[0]-'0';
 

где s1 сбрасывается в нуль каждый раз когда встречается нецифра.

 
 
 [ Сообщений: 4 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group