Сумма целых чисел в строке
Разработать программу, выполняющую обработку строки. Обработка строки должна осуществляться посимвольно (использование функций форматированного вывода scanf() и sscanf() не допускается). Найти сумму целых чисел, перечисленных в исходной строке через запятую. Ввод исходной строки осуществляется с клавиатуры.
Пример: 15,-2,1,0
Результат: 14
Вспоминаем как работать со строками в С++. Как-то нужно преобразовать строку к типу данных int, за вас это сделает функция atoi.
// sum_integer_string.cpp: определяет точку входа для консольного приложения.
#include "stdafx.h"
#include <iostream>
using namespace std;
int main(int argc, char* argv[])
{
char string[100]; // строка целых чисел
setlocale(LC_ALL, "rus");
cout << "Введите строку чисел(числа отделяются друг от друга запятой): ";
cin >> string;
int index = 0; // индекс символа в строке
int sum = 0;
while (string[index] != '\0') // пока не конец строки
{
if (string[index] != ',') // если текущий символ не запятая
{
sum += atoi((string + index)); // суммируем число
while (string[index] != ',')
index++; // увеличиваем индекс до тех пор пока не встретим запятую
}
else // текущий символ запятая
index++; // инкремент индекса
}
cout << "Сумма чисел = " << sum << endl;
system("pause");
return 0;
}
Обратите внимание на строку 21, функция atoi() преобразует строку в целое число. У данной функции всего один параметр — указатель на строку. То есть в качестве аргумента функции atoi() программа передаёт указатель на позицию в строке, в которой содержится цифра. И в случае, если между запятыми стоит несколько цифр, двух, трёх, четырёхразрядное число, функция atoi() захватит все разряды числа. После того как очередное число было изъято из строки с помощью оператора цикла while программа уинкрементирует индекс до тех пор пока индекс не будет указывать на символ запятой. Многократно повторяя выше описанные операции, в итоге мы получаем сумму чисел в строке.
Комментарии:
Нету комментариев для вывода...