Найти максимальное число среди чисел введенных с клавиатуры - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Найти максимальное число среди чисел введенных с клавиатуры, признак конца ввода 0, вывести количество введенных чисел Помогите с задачкой пожалуйста, ввожу числа и на этом все - тупик, и программка не завершается если вводишь 0. Что не так?
Листинг программы
  1. //---------------------------------------------------------------------------
  2. #include <stdio.h>
  3. #include <conio.h>
  4. //---------------------------------------------------------------------------
  5. int main()
  6. {
  7. int a,kol=0,max=0;
  8. char t;
  9. printf("Vvedite chisla");
  10. scanf("%d",&a);
  11. do
  12. {
  13. t=getch();
  14. if(max>a){
  15. max=a;
  16. kol++;
  17. }
  18. }
  19. while(t!='0');
  20. printf("Kolichestvo vvedennuh chisrl %d",kol);
  21. return 0;
  22. }
  23. //---------------------------------------------------------------------------

Решение задачи: «Найти максимальное число среди чисел введенных с клавиатуры»

textual
Листинг программы
  1. //---------------------------------------------------------------------------
  2. #include <stdio.h>
  3. #include <conio.h>
  4. //---------------------------------------------------------------------------
  5. int main()
  6. {
  7. int a,kol=0,max=0;
  8. char t;
  9. printf("Vvedite chisla"); //Ааа, транслит, мои глаза! Сделайте русский вывод. Или пишите на английском
  10. scanf("%d",&a); //ОДИН раз считывается число
  11.     do //Выполняем всё после этого
  12.     {
  13.     t=getch(); //Точно не _getch()?
  14.     if(max>a){ //Если 0>введённого числа (число отрицательное)
  15.     max=a; //max тоже становится отрицательным числом
  16.     kol++; //А мы прибавляем количество, учитывая что число мы ввели ОДИН раз. То есть если число отрицательное kol=1, иначе kol=0
  17.     }
  18.     }
  19.     while(t!='0'); /*Если мы вводим ноль, мы прекращаем сей цикл. Иначе количество чисел прибавляется (только если введённое число отрицательное), max не изменяется*/
  20.     printf("Kolichestvo vvedennuh chisrl %d",kol); //Опять транслит! Чисрл?
  21.     return 0; //Программа закрывается, не давая нам увидеть результат
  22. }
  23. //---------------------------------------------------------------------------

Объяснение кода листинга программы

В этом коде реализована простая программа на языке C, которая выполняет следующие действия:

  1. Объявляет переменные:
    • a для хранения введенного числа;
    • kol для подсчета количества введенных чисел;
    • max для хранения максимального числа.
  2. Выводит сообщение Vvedite chisla (введите числа) с помощью функции printf().
  3. Считывает введенное число с помощью функции scanf() и сохраняет его в переменной a.
  4. Затем выполняется цикл do-while, который продолжается до тех пор, пока не будет введено число равное нулю.
  5. Внутри цикла происходит следующее:
    • Считывается символ с клавиатуры с помощью функции getch() (возможно, здесь произошла ошибка перевода, и вместо getch() следует использовать другую функцию).
    • Если максимальное число max больше введенного числа a, то:
      • max присваивается значение a;
      • kol увеличивается на единицу.
  6. После окончания цикла выводится сообщение Kolichestvo vvedennuh chisrl (количество введенных чисел) с помощью функции printf(), и возвращается 0, чтобы закрыть программу. Обратите внимание, что в коде есть некоторые потенциальные проблемы:
  7. Нет проверки на ввод нуля до считывания числа, что может привести к бесконечному циклу.
  8. Нет проверки на корректность считывания числа с помощью scanf(). Если пользователь введет что-то, что не является числом, программа может аварийно завершиться.
  9. Нет обработки символов, введенных с клавиатуры, кроме нуля. Если пользователь введет что-то, что не является числом, программа просто пропустит этот ввод и продолжит работу.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы