Хочу сделать сумму n-чисел c n-строк(с переводом с string в int с помощью stringstream),но в переменную d постоянно записывается только первое число
{
int n, i, q=0, d = 0,f=0;
string s;
stringstream ss;
inf >> n;
getline(inf, s);
for (i = 1; i <= n; i++) {
getline(inf, s);
ss << s;
ss >> d;
q = q + d;
}
outf << q << endl;
} //пример input (каждое число с новой строки) 5//число n строк 11 12 13 14 15 output: 55(5 раз добавило 11)
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Ну, раз уж так надо - то сначала все запишите, а потом читайте... Примерно так:
ifstream inf("data");
stringstream ss;
int n, q = 0;
string s;
inf >> n;
getline(inf, s);
for(int i = 1; i <= n; i++)
{
getline(inf, s);
ss << s << " "; // Лучше добавить пробел, чтоб числа не сливались
}
for(int d, i = 1; i <= n; i++)
{
ss >> d;
q = q + d;
}
cout << q << endl;
Ну, или так:
ifstream inf("data");
int n, q = 0;
string s;
inf >> n;
getline(inf, s);
for(int d, i = 1; i <= n; i++)
{
stringstream ss;
getline(inf, s);
ss << s << " ";
ss >> d;
q = q + d;
}
cout << q << endl;