Завершение программы по нажатию Enter - C (СИ)
Формулировка задачи:
Вообщем суть такова вводятся числа через ентер, надо найти их среднее арифметическое. Ввод должен осуществляться до тех пор пока не будет пустого значения. Пробовал делать через строки с преобразования получился колхоз. Подскажите как реализовать?
Решение задачи: «Завершение программы по нажатию Enter»
textual
Листинг программы
int i; int c; while (printf("Input: ") && (c=getchar())!='\n') { ungetc(c, stdin); if (scanf("%d", &i) == 1) printf("i = %d\n", i); fflush(stdin); }
Объяснение кода листинга программы
В этом коде:
- Объявлены две переменные:
i
иc
. - Затем выполняется цикл while, который продолжается до тех пор, пока
printf
не выведетInput:
и не получит символ новой строки от пользователя (т.е. пока пользователь не нажмет Enter). - Внутри цикла, значение
c
присваивается символу, который был получен отgetchar
. - Затем, с помощью
ungetc
, этот символ возвращается в поток ввода, чтобы его можно было прочитать второй раз. - Если пользователь ввел целое число и
scanf
смог его считать (т.е. еслиscanf
вернул 1), то это число выводится на экран. - В конце каждого цикла, буфер ввода очищается с помощью
fflush
. Таким образом, этот код позволяет пользователю вводить числа, пока он не нажмет Enter. Как только Enter нажат, программа выводит последнее введенное число.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д