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

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

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

Ребят нужна помощь! Есть програ которая переводит время из часов в минуты. Ограничение по цифрам дал. А вот как ограничить по символам не помню помогите кто может.
#include <stdio.h>
#include <math.h>
#include <conio.h>
int main()
{
    double time, fractional, integer;
    do
    {
        printf("\nPlease, enter time (hh.mm): ");
        scanf_s("%lf", &time);
        if (time <=0 || time>24)
        {
            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);
        }
        
    }
    
    while (time <= 0 || time>24);
    _getch();
    return 0;
}

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

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <ctype.h>
 
int check(const char* str) {
    return isdigit(str[0])
           && isdigit(str[1])
           && (str[2] == '.')
           && isdigit(str[3])
           && isdigit(str[4]);
}
 
int main() {
    double time, fractional, integer;
    char str[6] = {0};
    int isOk = 0;
    while (!isOk) {
        printf("\nPlease, enter time (hh.mm): ");
        scanf("%5s", str);
        time = atof(str);
        if (!check(str) || (time <= 0) || (time > 24)) {
            fprintf(stderr, "invalid number ...\n");
        }
        else {
            fractional = modf(time, &integer);
            printf("%.lf h %.lf m it's %.lf minutes \n",
                   integer, fractional * 100,
                   integer * 60 + fractional * 100);
            isOk = 1;
        }
    }
 
    return 0;
}

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

  1. Включаем необходимые заголовочные файлы:
    • stdio.h для работы с вводом/выводом
    • stdlib.h для работы с математикой (функция atof) и стандартными функциями (функция scanf)
    • math.h для работы с математикой (функция modf)
    • ctype.h для работы с функцией isdigit
  2. Функция проверки входной строки на корректность:
    • Функция check принимает на вход указатель на строку (const char* str)
    • Проверяет, что первый символ строки является цифрой (isdigit(str[0]))
    • Проверяет, что второй символ строки является цифрой (isdigit(str[1]))
    • Проверяет, что третий символ строки равен точке ((str[2] == '.')
    • Проверяет, что четвертый и пятый символы строки являются цифрами (isdigit(str[3]) и isdigit(str[4]))
    • Возвращает 1, если все условия выполняются, и 0 в противном случае
  3. Основная функция программы:
    • В переменной time будет храниться общее количество часов
    • В переменной fractional будет храниться дробная часть времени (в минутах)
    • В переменной integer будет храниться целая часть времени (в часах)
    • В массиве str будет храниться строка с введенным временем
    • Переменная isOk используется для контроля корректности введенного времени
  4. Цикл ввода/вывода:
    • Программа просит ввести время в формате hh.mm
    • С помощью функции scanf считывает строку из стандартного ввода и сохраняет ее в переменной str
    • Преобразует строку в число с плавающей точкой с помощью функции atof и сохраняет результат в переменной time
    • Проверяет корректность введенного времени с помощью функции check
    • Если время некорректно или меньше 0 или больше 24, выводит сообщение об ошибке и завершает цикл
    • Если время корректно, преобразует его в минуты с помощью функции modf
    • Выводит результат в формате часы минуты
  5. Ключевые слова и их значения:
    • h - часы (целая часть времени)
    • m - минуты (дробная часть времени)
    • it's - это (для улучшения читаемости кода)

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


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

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

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