Считать количество часов, минут и секунд между двумя временными точками - C (СИ)

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

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

программа должна считать количество часов минут и секунд между двумя заданными временами
Листинг программы
  1. #include <stdio.h>
  2. struct time{
  3. int hours;
  4. int minutes;
  5. int seconds;
  6. };
  7. int main(void){
  8. struct time time1,time2,time3;
  9. printf("Enter time 1: \n");
  10. scanf("%i:%i:%i",&time1.hours,&time1.minutes,&time1.seconds);
  11. printf("Enter time 2: \n");
  12. scanf("%i:%i:%i",&time2.hours,&time2.minutes,&time2.seconds);
  13. int totalSeconds(struct time x);
  14. int SecondsToTime(int counter);
  15. int n1=totalSeconds(struct time time1);
  16. int n2=totalSeconds(struct time time2);
  17. int n3=n2-n1;
  18. printf("Result is %\n",totalSecods(n3));
  19. }
  20. struct time totalSecods(struct time x){
  21. int counter;
  22. counter+=x.hours*3600;
  23. counter+=x.minutes*60;
  24. counter+=x.seconds;
  25. return counter;
  26. }
  27. struct time secondsToTime(int counter){
  28. while(counter%3600<=3600){
  29. time3.hours++;
  30. counter/=3600;
  31. }
  32. while(counter%60<=60){
  33. time3.minutes++;
  34. counter/=60;
  35. }
  36. time3.seconds=counter;
  37. return time time3;
  38. }

Решение задачи: «Считать количество часов, минут и секунд между двумя временными точками»

textual
Листинг программы
  1. #include <stdio.h>
  2.  
  3. typedef struct time {
  4.     int     hours;
  5.     char    minutes,
  6.             seconds;
  7. } time;
  8.  
  9. int totalSeconds(time);
  10. time secondsToTime(int);
  11.  
  12. int main(void) {
  13.     time time1, time2;
  14.     printf("Enter time1:  \n");
  15.     // нужна проверка на ввод так как не может быть больше 60 минут и больше 60 секунд
  16.     scanf("%i %c %c", &time1.hours, &time1.minutes, &time1.seconds);
  17.     printf("Enter time 2:  \n");
  18.     scanf("%i %c %c", &time2.hours, &time2.minutes, &time2.seconds);
  19.  
  20.     int n3 = totalSeconds(time2) - totalSeconds(time1);
  21.  
  22.     time time3 = secondsToTime(n3);
  23.  
  24.     printf("Result is %i seconds\n", n3);
  25.     printf("hh:mm:ss = %i:%i:%i", time3.hours, time3.minutes, time3.seconds);
  26. }
  27.  
  28. int totalSeconds(time x) {
  29.     return x.hours*3600+x.minutes*60+x.seconds;
  30. }
  31.  
  32. // counter = содержит время в секундах
  33. time secondsToTime(int counter) {
  34.     time _time;
  35.     _time.hours = counter / 3600;
  36.     _time.minutes = (counter % 3600) / 60;
  37.     _time.seconds = counter % 60;
  38.     return _time;
  39. }

Объяснение кода листинга программы

  1. Включаем необходимые заголовочные файлы для работы с printf и scanf, а также для объявления структуры time.
  2. Объявляем структуру time, которая содержит переменные hours (количество часов), minutes (количество минут), seconds (количество секунд).
  3. Функция totalSeconds принимает структуру time и возвращает общее количество секунд.
  4. Функция secondsToTime принимает количество секунд и возвращает структуру time.
  5. В функции main мы объявляем две переменные time типа time для хранения времени.
  6. Мы запрашиваем у пользователя ввод времени в формате часы:минуты:секунды для обеих переменных.
  7. Мы вычисляем разницу между общим количеством секунд во втором времени и общим количеством секунд в первом времени, используя функцию totalSeconds.
  8. Мы преобразуем полученное количество секунд обратно в формат часы:минуты:секунды, используя функцию secondsToTime.
  9. Мы выводим результат на экран.

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


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

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

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

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

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

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