Форум программистов, компьютерный форум CyberForum.ru

Вывести на экран сумму чисел, встречающихся в тексте - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Вещественная матрица C++ http://www.cyberforum.ru/cpp-beginners/thread189776.html
Ввести с клавиатуры вещественную матрицу размерностью 5*5. Определить: 1) максимальный элемент среди элементов, расположенных ниже главной диагонали; 2) номера столбцов, сумма элементов в которых равна нулю.
C++ Развернуть матрицу на 90o по часовой стрелке. Заполнить матрицу случайными числами. Развернуть матрицу на 90o по часовой стрелке. http://www.cyberforum.ru/cpp-beginners/thread189772.html
Поиск шаблона в файле под Unix C++
помогите написать(или вдруг у кого есть) программу с использованием системных вызовов, осуществляющую поиск заданного шаблона(последовательности символов) в файле. При обнаружении шаблона, заменить его на "*" такой же длинны что и длинна шаблона
C++ Вывести на экран массив из целых чисел
У мкня тут такое дело, выдали вот курсовой проэкт, я в программировании слаб, поэтому уже давно над ним голову ломаю, помогите пожалуюста, вот задания: #1 Дано равенство: ((((1?2)?3)?4)?5)?6=35 Нужно составить программу которая сама расставит знаки "+"; "-"; "/"; "*" в уравнение. #2
C++ Меняют ли элементы в vector свои адреса при вызове метода push_back? http://www.cyberforum.ru/cpp-beginners/thread189734.html
Допустим я определил вектор и указатель на один из его элементов: vector< int > v( 10 ); int* p = &(v); Затем использую push_back v.push_back(42); Может ли при этом изменится адрес элемента v, так что указатель p перестанет на него указывать? А если может, то спасут ли меня ссылки вместо указателей?
C++ C++ IDE на флэшку Посоветуйте среду програмирования (IDE) которую можно было запустить с флэшки. подробнее

Показать сообщение отдельно
OdNairy
7 / 7 / 1
Регистрация: 07.02.2010
Сообщений: 22
11.11.2010, 22:28     Вывести на экран сумму чисел, встречающихся в тексте
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <string>
#include <typeinfo>
#include <cstdio>
using std::string;
using std::cout;
 
int main(int argc, char** argv) {
     string tmp;
    char* tm = new char [1024];
 
    gets(tm);
    tmp.assign(tm);
    int sum = 0,tmp_i = 0;
 
    for (int i = 0; i < tmp.length(); i++) {
        if (isdigit(tmp[i]))
            tmp_i = tmp_i*10+(tmp[i]-'0');
        else {
            sum+=tmp_i;
            tmp_i = 0;
        }
 
    }
    sum+=tmp_i;
 
    cout << sum;
    return 0;
}
Суть программы:
Вся идея в том, чтобы посимвольно обрабатывать строку и смотреть на принадлежность к числам. Если число - то умножаем предыдущее значение на 10 (увеличиваем разряд) и добавляет полученное значение. Как только "левый" символ - записываем в сумму. Ну и для того, чтобы получить порядок в таблице ASCII чисел, мы просто отнимает значение символа ноль =)

Добавлено через 12 минут
Там небольшая поправка, я позже заметил =). Если вносить строку с пробелом, то она не читается cin'ом. Для этого можно внести временную char-строку, принять в неё, и потом присвоить её значение string-строке. Знаю, что коряво, но более эффективного метода не знаю. Если кто-нибудь знает, милости прошу поправить меня.
 
Текущее время: 18:32. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru