PinkPrint Ответов: 2

Как суммировать значения ascii строки в данном файле


Всем привет,

Я пытаюсь закодировать программу, которая читает текстовый файл строка за строкой. Каждая строка содержит одно слово, и мы должны суммировать значения ascii этих слов строка за строкой и вывести его. Мой текстовый файл:
ЯБЛОКО
РОГАЛИК
РОГАЛИК
ЯБЛОКО
ЯБЛОКО
КЛЮКВА
ПОНЧИК

И мой код:
#include <iostream>
#include <fstream>
#include <sstream>

using namespace std;

int readFile(){
int sum=0;
ifstream file("text.txt");
string str;
while(getline(file,str)) {
for(int i=0;i<str.length();i++){
    sum=sum+str[i];
    cout<<sum<<endl;
}
sum=0;

}
return 0;
}


int main(){
readFile();

}


Когда я запускаю эту программу. первая строка вывода верна, после этого я не знаю, что происходит. Кроме того, я не понимаю, почему существует 21 строка вывода, когда она должна иметь только 7? Любая обратная связь будет очень признательна. Спасибо!

Что я уже пробовал:

#включать

2 Ответов

Рейтинг:
2

Patrice T

Цитата:
Я не понимаю, почему есть 21 строка вывода, когда он должен иметь только 7?

Вы хотите получить 1 сумму на слово, но ваш вывод находится в цикле букв, поэтому вы получаете 1 вывод на букву.
Проверьте свой подсчет выходных данных. Вы претендуете на 21 строку, когда у вас есть 39 букв.

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

Отладчик позволяет вам следить за выполнением строка за строкой, проверять переменные, и вы увидите, что есть точка, в которой он перестает делать то, что вы ожидаете.
Отладчик-Википедия, свободная энциклопедия[^]
Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]

Отладчик здесь для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.
Когда код не делает того, что ожидается, вы близки к ошибке.


Рейтинг:
19

Suvendu Shekhar Giri

Попробуйте поместить оператор print вне цикла for. Что-то вроде следующего-

while(getline(file,str)) {
for(int i=0;i<str.length();i++){
    sum=sum+str[i];    
}
cout<<sum<<endl;
sum=0; 
}


Надеюсь, это поможет :)