Элементарная задачка на Си - C (СИ)
Формулировка задачи:
Помогите пожалуйста с элементарной задачкой, не могу сделать именно корректность ввода, тоесть например при вводе буквы вместо числа выводить сообщение об ошибке
#include <stdio.h> #include <stdlib.h> #include <locale.h> int minut; int sec; int obs_sec; int main(void) { setlocale(LC_CTYPE, "Russian"); printf ("Введите количество минут \n"); scanf("%d", &minut) printf("Введите количество секунд "); scanf("%d", &sec); obs_sec = (minut*60)+sec; printf("Общее количество секунд = %d",obs_sec); return 0; }
Решение задачи: «Элементарная задачка на Си»
textual
Листинг программы
int ret = 0; while(!ret) { puts("Введите количество минут"); ret = scanf("%d", &minut); if(!ret) { puts("Неверный ввод: введите число"); scanf("%*s"); } }
Объяснение кода листинга программы
- Объявлена переменная
ret
типа int со значением 0. - Запущен цикл while, который будет выполняться до тех пор, пока значение переменной
ret
не станет ненулевым. - Внутри цикла выводится сообщение
Введите количество минут
с помощью функции puts. - Используя функцию scanf, происходит попытка чтения значения в переменную
minut
. - Функция scanf возвращает значение 1, если чтение прошло успешно, и 0 в противном случае.
- Если чтение не удалось (значение
ret
равно 0), то выводится сообщениеНеверный ввод: введите число
с помощью функции puts. - Используя функцию scanf с модификатором
%*s
, происходит попытка прочитать и игнорировать все символы до конца строки. - Цикл while повторяется до тех пор, пока не будет успешно считано значение в переменную
minut
. - По завершении цикла, значение переменной
ret
равно 1.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д