Перевод часов в минуты - C (СИ) (72400)

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

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

Здравствуйте. Привожу само задание. Написать программу, производящую перевод часов и минут в минуты. Входные данные вводятся в виде числа с плавающей точкой, где целая часть – количество часов, а дробная – количество минут. Ниже приведен рекомендуемый вид экрана. Введите время (чч.мм) : 12.45 12 часов 45 минут это 765 минут Сам работающий код у меня есть, но еще необходимо сделать проверку введенных данных. Тоесть если вводишь символ, то программа должна "ругаться на него" и предложить ввести данные еще раз.
#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);
}
проверку правильности я реализовал через "if (fractional <= 0) printf("invalid number! Try Again? (1 - Yes 2 - No) \n");". Но думаю что это не совсем правильно. еще есть вопрос как реализовать возможность ввести данные еще раз, в случае правильного и неправильного ввода. тоесть когда высвечивается результат программа должна спросить, "хотите попробовать еще раз?" или вы хотите выйти" .

Решение задачи: «Перевод часов в минуты»

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;
}

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

  1. Объявлены переменные: time, fractional, integer.
  2. В цикле for (;;) происходит получение времени от пользователя.
  3. С помощью функции scanf_s(%lf, &time) время считывается в переменную time.
  4. Проверка времени на корректность введенных данных: если время меньше или равно 0, либо больше 23.59, выводится сообщение Invalid Number!.
  5. В противном случае, время преобразуется в минуты с помощью функций modf(time, &integer) и printf(%.lf h %.lf m it's %.lf minutes, integer, fractional100, integer60+fractional*100).
  6. Если пользователь ввел некорректные данные (буквы), программа выводит сообщение You Enter Letters! и завершается.

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


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

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

11   голосов , оценка 4.273 из 5
Похожие ответы