Найти максимальное число среди чисел введенных с клавиатуры - C (СИ)
Формулировка задачи:
Найти максимальное число среди чисел введенных с клавиатуры, признак конца ввода 0, вывести количество введенных чисел
Помогите с задачкой пожалуйста, ввожу числа и на этом все - тупик, и программка не завершается если вводишь 0. Что не так?
//--------------------------------------------------------------------------- #include <stdio.h> #include <conio.h> //--------------------------------------------------------------------------- int main() { int a,kol=0,max=0; char t; printf("Vvedite chisla"); scanf("%d",&a); do { t=getch(); if(max>a){ max=a; kol++; } } while(t!='0'); printf("Kolichestvo vvedennuh chisrl %d",kol); return 0; } //---------------------------------------------------------------------------
Решение задачи: «Найти максимальное число среди чисел введенных с клавиатуры»
textual
Листинг программы
//--------------------------------------------------------------------------- #include <stdio.h> #include <conio.h> //--------------------------------------------------------------------------- int main() { int a,kol=0,max=0; char t; printf("Vvedite chisla"); //Ааа, транслит, мои глаза! Сделайте русский вывод. Или пишите на английском scanf("%d",&a); //ОДИН раз считывается число do //Выполняем всё после этого { t=getch(); //Точно не _getch()? if(max>a){ //Если 0>введённого числа (число отрицательное) max=a; //max тоже становится отрицательным числом kol++; //А мы прибавляем количество, учитывая что число мы ввели ОДИН раз. То есть если число отрицательное kol=1, иначе kol=0 } } while(t!='0'); /*Если мы вводим ноль, мы прекращаем сей цикл. Иначе количество чисел прибавляется (только если введённое число отрицательное), max не изменяется*/ printf("Kolichestvo vvedennuh chisrl %d",kol); //Опять транслит! Чисрл? return 0; //Программа закрывается, не давая нам увидеть результат } //---------------------------------------------------------------------------
Объяснение кода листинга программы
В этом коде реализована простая программа на языке C, которая выполняет следующие действия:
- Объявляет переменные:
a
для хранения введенного числа;kol
для подсчета количества введенных чисел;max
для хранения максимального числа.
- Выводит сообщение
Vvedite chisla
(введите числа) с помощью функцииprintf()
. - Считывает введенное число с помощью функции
scanf()
и сохраняет его в переменнойa
. - Затем выполняется цикл
do-while
, который продолжается до тех пор, пока не будет введено число равное нулю. - Внутри цикла происходит следующее:
- Считывается символ с клавиатуры с помощью функции
getch()
(возможно, здесь произошла ошибка перевода, и вместоgetch()
следует использовать другую функцию). - Если максимальное число
max
больше введенного числаa
, то:max
присваивается значениеa
;kol
увеличивается на единицу.
- Считывается символ с клавиатуры с помощью функции
- После окончания цикла выводится сообщение
Kolichestvo vvedennuh chisrl
(количество введенных чисел) с помощью функцииprintf()
, и возвращается 0, чтобы закрыть программу. Обратите внимание, что в коде есть некоторые потенциальные проблемы: - Нет проверки на ввод нуля до считывания числа, что может привести к бесконечному циклу.
- Нет проверки на корректность считывания числа с помощью
scanf()
. Если пользователь введет что-то, что не является числом, программа может аварийно завершиться. - Нет обработки символов, введенных с клавиатуры, кроме нуля. Если пользователь введет что-то, что не является числом, программа просто пропустит этот ввод и продолжит работу.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д