Я пишу программу, которая суммирует первые десять цифр из ста пятидесятизначных чисел, которые находятся в текстовом файле. Достаточно легко, и я получил правильный ответ, но я пытаюсь понять некоторые странные вещи, которые, похоже, продолжаются. Когда первая соиЬ линия включена, как она появляется ниже результатов программы:наличие cout, изменяющего результат программы
8549904804355727945614717320-7-60-4-3-2-7-3-4-8-7-7-6-1-840-9-5-2-3-39622981389563771795892386478402037366780930326737553
Когда изменяется на комментарий о праве на это, она выводит:
97414719961102146325906539660-4-7-2-4-4-3-4-8-2-8-3-8-2-870-8-5-2-3-39622981389563771795892386478402037366780930326737553
У меня возникли проблемы понимание
1) как то, что я выводю, может каким-то образом повлиять на будущие значения, которые он выводит.
2) Как штрихи попадают в программу.
Примечание: выход представляет собой сумму всех строк в обратном порядке.
char file[] = "nums.txt";
ifstream ss(file);
string iString;
string sarr[100];
int sum[100];
while(getline(ss, iString, '\n')) {
sarr[i] = iString;
i++;
}
ss.close();
cout << sarr[0] << endl << endl; //or cout<<(int)sarr[0][3]-48<<endl<<endl;
for(int i = 99; i >= 0; i--) {
sum[i] = 0;
for(int j = 0; j < 100; j++) {
sum[i] += (int)sarr[j][i];
}
sum[i] -= 4800;//since 100 strings and '0' in ascii is 48 subtract 48*100
}
for(int i = 99; i > 0; i--) {
sum[i-1] += sum[i]/10;
sum[i] = sum[i] % 10;
cout << sum[i];
}
cout << sum[0] << endl << endl;
Какая линия cout вы меняете, чтобы быть комментарием? Их три. –
Что вы пытаетесь сделать с этим sarr [0] [3] - 48 ... некоторые комментарии сделают вашу программу более читаемой. –
Есть пара «endl's» между первым и вторым cout. Вы опустили первую строку вывода или смяли две строки вместе? –