Перевод часов в минуты - C (СИ) (72400)
Формулировка задачи:
Здравствуйте. Привожу само задание.
Написать программу, производящую перевод часов и минут в минуты. Входные данные вводятся в виде числа с плавающей точкой, где целая часть – количество часов, а дробная – количество минут. Ниже приведен рекомендуемый вид экрана.
Введите время (чч.мм) : 12.45
12 часов 45 минут это 765 минут
Сам работающий код у меня есть, но еще необходимо сделать проверку введенных данных. Тоесть если вводишь символ, то программа должна "ругаться на него" и предложить ввести данные еще раз.
проверку правильности я реализовал через "if (fractional <= 0) printf("invalid number! Try Again? (1 - Yes 2 - No) \n");". Но думаю что это не совсем правильно. еще есть вопрос как реализовать возможность ввести данные еще раз, в случае правильного и неправильного ввода. тоесть когда высвечивается результат программа должна спросить, "хотите попробовать еще раз?" или вы хотите выйти" .
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>
#include <conio.h>
void main()
{
float time, fractional, integer;
int x;
AP: printf ("Please, enter time (hh.mm): ");
scanf("%f", &time);
fractional = modf(time, &integer);
if (fractional <= 0) printf("invalid number! Try Again? (1 - Yes 2 - No) \n");
else printf("%.fh %.fm it's %.f minutes \n", integer, fractional * 100, integer * 60 + fractional * 100);
}Решение задачи: «Перевод часов в минуты»
textual
Листинг программы
#include <stdio.h>
#include <ctype.h>
#include <stdio.h>
#include <math.h>
#include <conio.h>
int main()
{
double time, fractional, integer;
for (;;)
{
printf("\nPlease, enter time (hh.mm): ");
if (scanf_s("%lf", &time))
{
if (time <= 0 || time > 23.59)
{
printf("Invalid Number!");
}
else
{
fractional = modf(time, &integer);
printf("%.lf h %.lf m it's %.lf minutes \n", integer, fractional * 100, integer * 60 + fractional * 100);
}
}
else
{
printf("You Enter Letters!");
break;
}
}
_getch();
return 0;
}
Объяснение кода листинга программы
- Объявлены переменные: time, fractional, integer.
- В цикле for (;;) происходит получение времени от пользователя.
- С помощью функции scanf_s(
%lf, &time) время считывается в переменную time. - Проверка времени на корректность введенных данных: если время меньше или равно 0, либо больше 23.59, выводится сообщение
Invalid Number!. - В противном случае, время преобразуется в минуты с помощью функций modf(time, &integer) и printf(
%.lf h %.lf m it's %.lf minutes, integer, fractional100, integer60+fractional*100). - Если пользователь ввел некорректные данные (буквы), программа выводит сообщение
You Enter Letters!и завершается.