Цикл вайл язык Си #include main() { int N,a, max, i, imax; scanf("%d", &N); max=0; ...

0 голосов

Цикл вайл язык Си
#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 степени). Определить порядковый номер его максимальной цифры, считая от начала числа (если таких цифр несколько, то вывести номер первой встретившейся)<br>
Пример входных и выходных данных
№ теста Входные данные Выходные данные
1 45545 2
2 100 1


спросил от (89 баллов) в категории Информатика
1 Ответ
0 голосов
ответил от Отличник (9.7k баллов)
 
Лучший ответ

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


оставил комментарий от (89 баллов)

это не работает

оставил комментарий от (89 баллов)

проверьте

оставил комментарий от (89 баллов)

в примере 45545

оставил комментарий от (89 баллов)

выводит 5

оставил комментарий от Отличник (9.7k баллов)

Ответ изменен.

оставил комментарий от (89 баллов)

спасибо

оставил комментарий от Отличник (9.7k баллов)

Не за что.

...