Написать функцию для вычисления интервала времени в секундах между двумя моментами, находящимися внутри двенадцатичасового цикла - C (СИ)
Формулировка задачи:
Напишите функцию, которая воспринимает как три целых аргумента (часы, минуты и секунды) и возвращает количество секунд, прошедших со времени, когда часы в последний раз показали 12. Используйте эту функцию для вычисления интервала времени в секундах между двумя моментами, находящимися внутри двенадцатичасового цикла.
такой вариант программы не запускается. Что не так?
Листинг программы
- #include <stdio.h>
- #include <windows.h>
- int seconds(int chas, int min,int sec);
- int main() {
- int a1,b1,c1,a2,b2,c2,z;
- printf("Введите 2 момента времени 3 числами (часы минуты секунды 1 момента, а потом 2ого)");
- scanf("%d%d%d",&a1,&b1,&c1);
- scanf("%d%d%d",&a2,&b2,&c2);
- z=seconds(a1,b1,c1)-seconds(a2,b2,c2);
- if (z<0) z=-z;
- printf("Между ними прошло %d часов %d минут и %d секунд",z/3600,(z%3600)/60,z%60);
- system("PAUSE");
- return 0;
- }
- int seconds(int chas, int min,int sec)
- {
- if (chas>=12) chas=chas-12;
- return (chas*3600+min*60+sec);
- }
Решение задачи: «Написать функцию для вычисления интервала времени в секундах между двумя моментами, находящимися внутри двенадцатичасового цикла»
textual
Листинг программы
- #include <stdio.h>
- #include <stdlib.h>
- typedef struct {
- unsigned hour;
- unsigned min;
- unsigned sec;
- } Time;
- int getTime(FILE* stream, Time* time) {
- return (fscanf(stream, "%u:%u:%u", &time->hour, &time->min, &time->sec) == 3);
- }
- unsigned getSeconds(const Time* time) {
- return time->sec + (time->min * 60) + ((time->hour % 12) * 60 * 60);
- }
- unsigned diffTime(const Time* first, const Time* second) {
- unsigned tmFirst = getSeconds(first);
- unsigned tmSecond = getSeconds(second);
- return (tmFirst < tmSecond) ? (tmSecond - tmFirst) : (tmFirst - tmSecond);
- }
- int main() {
- Time first, second;
- printf("input first and second time (h:m:s): ");
- if (getTime(stdin, &first) && getTime(stdin, &second)) {
- fprintf(stdout, "seconds = %u\n", diffTime(&first, &second));
- }
- else {
- fprintf(stderr, "error input ...\n");
- }
- system("pause");
- return 0;
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д