Считать количество часов, минут и секунд между двумя временными точками - 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;
- }
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы для работы с printf и scanf, а также для объявления структуры time.
- Объявляем структуру time, которая содержит переменные hours (количество часов), minutes (количество минут), seconds (количество секунд).
- Функция totalSeconds принимает структуру time и возвращает общее количество секунд.
- Функция secondsToTime принимает количество секунд и возвращает структуру time.
- В функции main мы объявляем две переменные time типа time для хранения времени.
- Мы запрашиваем у пользователя ввод времени в формате часы:минуты:секунды для обеих переменных.
- Мы вычисляем разницу между общим количеством секунд во втором времени и общим количеством секунд в первом времени, используя функцию totalSeconds.
- Мы преобразуем полученное количество секунд обратно в формат часы:минуты:секунды, используя функцию secondsToTime.
- Мы выводим результат на экран.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д