C/C++

Помогите написать программу на С

Разработать функцию timeDiff(h1, m1, h2, m2, h, m), вычисляющую длину временного промежутка h часов m минут между двумя моментами времени — начальным (h1 часов m1 минут) и конечным (h2 часов m2 минут) в пределах одних суток (h1, m1, h2, m2 — входные, а h, m — выходные параметры). В качестве результирующего значения функция должна возвращать истину, если входные данные корректны (начальный момент времени предшествует конечному); в противном случае функция должна
возвращать ложь. С помощью этой функции найти попарные разности для трех заданных пользователем моментов времени.
Нужно сделать по типу этого
#include <stdlib.h>
#include <stdio.h>
#include <stdbool.h>
_Bool timeDiff(int h1, int m1, int h2, int m2, int* h, int* m) {
static const int mh = 60;
int mm1 = h1 * mh + m1;
int mm2 = h2 * mh + m2;
int mm = mm2 - mm1;
if (mm < 0) return false;
*h = mm / mh;
*m = mm % mh;
return true;
}
unsigned hours(const char* msg) {
unsigned value = 24;
while (value >= 24) {
printf(msg);
scanf_s("%u", &value);
while (getchar() != '\n');
}
return value;
}
unsigned minutes(const char* msg) {
unsigned value = 60;
while (value >= 60) {
printf(msg);
scanf_s("%u", &value);
while (getchar() != '\n');
}
return value;
}
int main(void) {
const char* fs = "%02u:%02u - %02u:%02u = %02u:%02u\n";
unsigned h1, m1, h2, m2, h, m, i, n = 3;
system("chcp 1251 > nul");
for (i = 0; i < n; ++i) {
h1 = hours("Стартовое время в часах: ");
m1 = minutes("Стартовое время в минутах: ");
h2 = hours("Финишное время в часах: ");
m2 = minutes("Финишное время в минутах: ");
if (timeDiff(h1, m1, h2, m2, &h, &m)) printf(fs, h2, m2, h1, m1, h, m);
else puts("Ошибка!");
}
system("pause > nul");
return 0;
}
Mukhammedali Salaidyn
Mukhammedali Salaidyn
69 181
Лучший ответ