Информатика, вопрос задал Аноним , 2 года назад

цикл вайл язык Си
#include
main()
{
int N,a, max, i, imax;
scanf("%d", &N);
max=0;
i=0;
while (N>0)
{ i++;
a=N%10;
N=N/10;
if (a>max)
{ max=a;
imax=i;
}}
printf ("%d", imax);

}
это моя программа , где ошибка?
это задание

Дано натуральное число N (N<=10 в 9 степени). Определить порядковый номер его максимальной цифры, считая от начала числа (если таких цифр несколько, то вывести номер первой встретившейся)

Пример входных и выходных данных
№ теста Входные данные Выходные данные
1 45545 2
2 100 1

Ответы на вопрос

Ответил srzontmp
1
В Вашей программе номер максимального числа подсчитывается  от младших разрядов числа к старшим, а вывести нужно номер от старших разрядов к младшим.  Поэтому, нужно добавить в программу строку   imax = i - imax + 1;   перед строкой
 printf ("%d", imax);
И ещё, так как нужно вывести первую максимальную цифру числа (если их несколько), то нужно изменить строку   if (a>max)   на  строку   if (a>=max)



srzontmp: Ответ изменен.
srzontmp: Не за что.
Новые вопросы