Написать функцию для вычисления интервала времени в секундах между двумя моментами, находящимися внутри двенадцатичасового цикла - 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;
}

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


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

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

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