Найти максимальное число среди чисел введенных с клавиатуры - 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, которая выполняет следующие действия:

  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
Похожие ответы