Написать функцию для вычисления интервала времени в секундах между двумя моментами, находящимися внутри двенадцатичасового цикла - C (СИ)

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

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

Напишите функцию, которая воспринимает как три целых аргумента (часы, минуты и секунды) и возвращает количество секунд, прошедших со времени, когда часы в последний раз показали 12. Используйте эту функцию для вычисления интервала времени в секундах между двумя моментами, находящимися внутри двенадцатичасового цикла.
Листинг программы
  1. #include <stdio.h>
  2. #include <windows.h>
  3. int seconds(int chas, int min,int sec);
  4. int main() {
  5. int a1,b1,c1,a2,b2,c2,z;
  6. printf("Введите 2 момента времени 3 числами (часы минуты секунды 1 момента, а потом 2ого)");
  7. scanf("%d%d%d",&a1,&b1,&c1);
  8. scanf("%d%d%d",&a2,&b2,&c2);
  9. z=seconds(a1,b1,c1)-seconds(a2,b2,c2);
  10. if (z<0) z=-z;
  11. printf("Между ними прошло %d часов %d минут и %d секунд",z/3600,(z%3600)/60,z%60);
  12. system("PAUSE");
  13. return 0;
  14. }
  15. int seconds(int chas, int min,int sec)
  16. {
  17. if (chas>=12) chas=chas-12;
  18. return (chas*3600+min*60+sec);
  19. }
такой вариант программы не запускается. Что не так?

Решение задачи: «Написать функцию для вычисления интервала времени в секундах между двумя моментами, находящимися внутри двенадцатичасового цикла»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. typedef struct {
  5.     unsigned hour;
  6.     unsigned min;
  7.     unsigned sec;
  8. }   Time;
  9.  
  10. int getTime(FILE* stream, Time* time) {
  11.     return (fscanf(stream, "%u:%u:%u", &time->hour, &time->min, &time->sec) == 3);
  12. }
  13.  
  14. unsigned getSeconds(const Time* time) {
  15.     return time->sec + (time->min * 60) + ((time->hour % 12) * 60 * 60);
  16. }
  17.  
  18. unsigned diffTime(const Time* first, const Time* second) {
  19.     unsigned tmFirst = getSeconds(first);
  20.     unsigned tmSecond = getSeconds(second);
  21.  
  22.     return (tmFirst < tmSecond) ? (tmSecond - tmFirst) : (tmFirst - tmSecond);
  23. }
  24.  
  25. int main() {
  26.     Time first, second;
  27.  
  28.     printf("input first and second time (h:m:s): ");
  29.     if (getTime(stdin, &first) && getTime(stdin, &second)) {
  30.         fprintf(stdout, "seconds = %u\n", diffTime(&first, &second));
  31.     }
  32.     else {
  33.         fprintf(stderr, "error input ...\n");
  34.     }
  35.  
  36.     system("pause");
  37.     return 0;
  38. }

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


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

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

13   голосов , оценка 4.154 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы