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