У меня есть задача написать программу на C, которая найдет наибольшую сумму из 3 последовательных цифр в цифрах. Я написал это, но у меня проблемы: программа работает нормально, но вместо правильного ответа она набирает некоторые странные числа. Например, если вход «560315», ответ «155». Однако, если я наберу «560415», ответ будет по-прежнему «155», и если я наберу «561315», ответ изменится на «156». Это проблема с кодировкой? Вот код:Найдите самую большую сумму из 3 последовательных цифр от числа
#include <stdio.h>
int isempt(int a) {
if ((a==' ')||(a=='\n')||(a=='\t')) {
return 1;
}
else return 0;
}
main() {
int a, b, c, d, e, i, maxsum;
a = 0;
b = 0;
c = 0;
d = 0;
maxsum = 0;
i = 0;
int counter = 0; //the variables "numsearch" and "inside" indicate whether program is in the number or outside it
int numsearch = 1;
int inside = 0;
while ((i = getchar())!=EOF) {
if (numsearch==1) {
if (isempt(i)==0) {
numsearch = 0;
inside = 1;
a = i;
counter++;
}
}
else if ((isempt(i)==0)&&(inside==1)) {
if (counter == 1) {
b = i;
counter++;
}
else if (counter == 2) {
c = i;
counter++;
}
else if (counter == 3) {
d = i;
maxsum = a+b+c;
if ((b+c+d) > maxsum) {
maxsum =(b+c+d);
}
a =b;
b = c;
c = d;
counter++;
}
else if (counter == 4) {
d = i;
if ((b+c+d)>maxsum) {
maxsum = b+c+d;
}
a=b;
b=c;
c=d;
}
}
else if ((counter>=3)&&(isempt(i)==1)) {
printf("\n%d\n", maxsum);
counter = 0;
numsearch = 1;
inside = 0;
a = 0;
b = 0;
c = 0;
d = 0;
}
else {
counter = 0;
numsearch = 1;
inside = 0;
a = 0;
b = 0;
c = 0;
d = 0;
}
}
}
Он предназначен для поиска трех крупнейших цифр, а затем их суммирования? поэтому 560315 должен произвести 16? –
Вы вычисляете значения символов ASCII, а не цифры! –
@TomTanner Нет. Я считаю, что ответ должен быть 11, это сумма 560 –