2014 dxdy logo

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

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




Начать новую тему Ответить на тему
 
 C++ строки
Сообщение22.12.2009, 09:14 


31/08/09
183
Подскажите как сложить числа из строки, например.
есть строка
char *str="j1h2kjhjk7";
надо
cout << str[1]+str[3]+str[9];

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


29/07/05
8248
Москва
Например примерно так:

Используется синтаксис 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 
Заслуженный участник


26/07/09
1559
Алматы
2PAV
Цитата:
нужно поступать аккуратнее

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

 Профиль  
                  
 
 Re: C++ строки
Сообщение30.12.2009, 23:03 


30/12/09
95
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 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group