C++

Сумма целых чисел в строке

Разработать программу, выполняющую обработку строки. Обработка строки должна осуществляться посимвольно (использование функций форматированного вывода 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 программа уинкрементирует индекс до тех пор пока индекс не будет указывать на символ запятой. Многократно повторяя выше описанные операции, в итоге мы получаем сумму чисел в строке.
Теги:
числа
Добавлено: 11 Апреля 2018 10:37:12 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...