Теперь Кью работает в режиме чтения

Мы сохранили весь контент, но добавить что-то новое уже нельзя

Задача Dev c ++

Вы решили посмотреть фильм. Он начинается в h1:m1 и заканчивается в h2:m2. Гарантируется, что фильм длится четное количество минут, а также фильм начинается и заканчивается в один и тот же день. Также гарантируется, что фильм длится хотя бы две минуты. Найдите время середины фильма.

Входные данные

В первой строке вводится время начала фильма h1:m1 в формате hh:mm.

Во второй строке в таком же формате задано время конца фильма h2:m2.

Гарантируется, что 0≤h1,h2≤23 и 0≤m1,m2≤59.

Выходные данные

Выведите время конца фильма так же в формате hh:mm.

Программирование
umbe t.
  ·

Может не самое простое решение, но по быстрому пока только так получилось:

#include <cstdlib>

#include <iostream>

#include <sstream>

using namespace std;

unsigned int h1, m1; //Время начала фильма

unsigned int h2, m2; //Время окончания фильма

unsigned int hs; //Время начала фильма (в минутах от начала дня)

unsigned int he; //Время завершения фильма (в минутах от начала дня)

string ts, te;

stringstream ss;

//Возвращает количество минут с начала дня до h:m

unsigned int GetMinutesFromDay(unsigned int h, unsigned int m)

{

return h * 60 + m;

}

//Получает количество минут с начала дня начала и конца фильма.

//Возвращает время середины фильма в виде строки hh:mm

string MinutesToTime(unsigned int t)

{

string str;

unsigned int h = t / 60;

unsigned int m = t - (h * 60);

stringstream sh, sm;

sh << h;

sm << m;

str = sh.str() + ":" + sm.str();

return str;

}

//Получает количество минут с начала дня начала и конца фильма.

//Возвращает время середины фильма в виде строки hh:mm

string GetMidTime(unsigned int s, unsigned int e)

{

string str;

//Середина фильма от начала дня в минутах

unsigned int t = (s + (e - s) / 2);

unsigned int h = t / 60;

unsigned int m = t - (h * 60);

stringstream sh, sm;

sh << h;

sm << m;

str = sh.str() + ":" + sm.str();

return str;

}

//*****************

// ОСНОВНАЯ ПРОГРАММА

//*****************

int main(int argc, char *argv[])

{

//Ввод данных

cout << "Beginning of the film = "; cin >> ts;

cout << "End of the film = "; cin >> te;

ss << ts[0] << ts[1];

ss >> h1;

ss.clear();

ss << ts[3] << ts[4];

ss >> m1;

ss.clear();

ss << te[0] << te[1];

ss >> h2;

ss.clear();

ss << te[3] << te[4];

ss >> m2;

ss.clear();

//Вычисления

hs = GetMinutesFromDay(h1, m1); //Начало в минутах

he = GetMinutesFromDay(h2, m2); //Конец в минутах

cout << "Time the middle of the movie = " << GetMidTime(hs, he) << endl;

cout << "End time of the movie = " << MinutesToTime(he) << endl;

system("PAUSE");

return EXIT_SUCCESS;

}

Решение простых задач на С++ можно посмотреть здесь.

film.png