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

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

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

программа должна считать количество часов минут и секунд между двумя заданными временами
#include <stdio.h>
struct time{
    int hours;
    int minutes;
    int seconds;
    };
     
int main(void){
    struct time time1,time2,time3;
    printf("Enter time 1:  \n");
    scanf("%i:%i:%i",&time1.hours,&time1.minutes,&time1.seconds);
    printf("Enter time 2:  \n");
    scanf("%i:%i:%i",&time2.hours,&time2.minutes,&time2.seconds);
    int totalSeconds(struct time x);
    int SecondsToTime(int counter);
   int   n1=totalSeconds(struct time time1);
   int   n2=totalSeconds(struct time time2);
   int n3=n2-n1;
     
    printf("Result is %\n",totalSecods(n3));
    }    
     
    struct time totalSecods(struct time x){
    int counter;
    counter+=x.hours*3600;
    counter+=x.minutes*60;
    counter+=x.seconds;
    return counter;
    }
     
    struct time secondsToTime(int counter){
    while(counter%3600<=3600){
    time3.hours++;
    counter/=3600;
}
while(counter%60<=60){
    time3.minutes++;
    counter/=60;
    }
    time3.seconds=counter;
     
   return time time3;
    }

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

textual
Листинг программы
#include <stdio.h>
 
typedef struct time {
    int     hours;
    char    minutes,
            seconds;
} time;
 
int totalSeconds(time);
time secondsToTime(int);
 
int main(void) {
    time time1, time2;
    printf("Enter time1:  \n");
    // нужна проверка на ввод так как не может быть больше 60 минут и больше 60 секунд
    scanf("%i %c %c", &time1.hours, &time1.minutes, &time1.seconds);
    printf("Enter time 2:  \n");
    scanf("%i %c %c", &time2.hours, &time2.minutes, &time2.seconds);
 
    int n3 = totalSeconds(time2) - totalSeconds(time1);
 
    time time3 = secondsToTime(n3);
 
    printf("Result is %i seconds\n", n3);
    printf("hh:mm:ss = %i:%i:%i", time3.hours, time3.minutes, time3.seconds);
}
 
int totalSeconds(time x) {
    return x.hours*3600+x.minutes*60+x.seconds;
}
 
// counter = содержит время в секундах
time secondsToTime(int counter) {
    time _time;
    _time.hours = counter / 3600;
    _time.minutes = (counter % 3600) / 60;
    _time.seconds = counter % 60;
    return _time;
}

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

  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
Похожие ответы