Найти максимальное число среди чисел введенных с клавиатуры - 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(). Если пользователь введет что-то, что не является числом, программа может аварийно завершиться. - Нет обработки символов, введенных с клавиатуры, кроме нуля. Если пользователь введет что-то, что не является числом, программа просто пропустит этот ввод и продолжит работу.