Корректное отображение часов и минут - C (СИ)
Формулировка задачи:
Сейчас время отображается в минутах(допустим 145 минут). Можно как-то сделать, что отдельно часы и отдельно минуты отображались?
float ave_speed = 760;
for(i=0;i<3;i++)
{
time = mas[i].distance_km/ave_speed;
time_2 = time*60;
printf("\n\nПерелет в %s займет %.1f минут\n", mas[i].destination, time_3);
}Решение задачи: «Корректное отображение часов и минут»
textual
Листинг программы
float time = 0;
float ave_speed = 760;
float minutes = 0;
int hours = 0;
int time_2 = 0;
for(i=0;i<3;i++)
{
time = mas[i].distance_km/ave_speed;
minutes = time*60;
for (j = 60; j < minutes; j += 60)
{
hours++;
}
time_2 = minutes - (60 * hours);
printf("\n\nПерелет в %s займет %d часа(-ов) %d минут(-ы)\n", mas[i].destination, hours, time_2);
}
Объяснение кода листинга программы
- В первой строке объявляются переменные:
- time - для хранения времени в секундах;
- ave_speed - для хранения средней скорости в км/ч;
- minutes - для хранения количества минут;
- hours - для хранения количества часов;
- time_2 - для хранения времени в минутах.
- В цикле for перебираются элементы массива mas (предположительно это массив структур), при этом инициализируется переменная time как отношение расстояния в километрах к средней скорости.
- В каждой итерации цикла значение переменной time умножается на 60 и сохраняется в переменную minutes.
- В цикле for, который находится внутри предыдущего, значение переменной minutes вычитается из 60 по мере прохождения каждой минуты, при этом переменная hours увеличивается на единицу. Таким образом, в переменной hours хранится количество полных часов.
- Переменная time_2 инициализируется как разница между количеством минут и количеством полных часов, умноженным на 60.
- Выводится сообщение с информацией о перелете, включающее название места назначения, количество полных часов и количество минут, не вошедших в полные часы.