Разработать программу, выполняющую обработку строки. Обработка строки должна осуществляться посимвольно (использование функций форматированного вывода 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 программа уинкрементирует индекс до тех пор пока индекс не будет указывать на символ запятой. Многократно повторяя выше описанные операции, в итоге мы получаем сумму чисел в строке. Результат ниже:
Комментарии
YourSpace_tym
YourSpace_tym
RodjeR
PeZBarboZ
RodjeR