0

Пишу программу, которая должна считывать и выводить сумму, всех введенных в строку чисел.

Проблема с выводом, вместо того, чтобы выводить сумму значений введеных чисел, программа выводит сумму коддов клавиш этих же чисел. Сумму кодов клавиш соответствует сумме самих чисел.

Просьба, объяснить почему так выходит и как пофиксить вывод.

#include <iostream>
#include <sstream>
using namespace std;

int Quan(string numb) { return numb.length(); }

int Sum(string numb) { int s = Quan(numb); int su = 0; for (int i = 0; i < s; i++) { su += numb[i]; } return su; }

int main() { setlocale(LC_ALL, "Rus"); string numb; cin >> numb; cout << Sum(numb); }

1 Answers1

0

У вас ни о какой сумме чисел в строке речь идти не может, потому что вы читаете в numb не строку, а слово - одно число. Так что можете просто написать

int numb;
cin >> numb;
cout << numb;

или

string numb;
cin >> numb;
cout << stoi(numb);

Чтобы делать то, что вы хотите -

string numb;
getline(cin,numb);
istringstream ss(numb);
int n,sum = 0;
while(ss >> n) sum += n;
cout << sum;
Mikhajlo
  • 12,592