C/C++

Помогите пожалуйста решить задачу на языке СИ или С# !!!

1.46 Текущее время (часы, минуты, секунды) задано тремя переменными: h, m, s. Округлить его до целых значений минут и часов. Например, 14 ч 21 мин 45 с преобразуется в 14 ч 22 мин или 14 ч, а 9 ч 59 мин 23 с — соответственно в 9 ч 59 мин или 10 ч.
using System;
namespace Answer {
class Program {
static private void Main() {
var time = CreateTime();
Console.WriteLine(time.HoursTime());
Console.WriteLine(time.ShortTime());
Console.WriteLine(time.FullTime());
Console.ReadKey();
}
static public Time CreateTime() {
var time = new Time();
Console.Write("Время в часах 0-23: ");
time.Hours = int.Parse(Console.ReadLine());
Console.Write("Время в минутах 0-59: ");
time.Minutes = int.Parse(Console.ReadLine());
Console.Write("Время в секундах 0-59: ");
time.Seconds = int.Parse(Console.ReadLine());
return time;
}
}
public struct Time {
public int Hours { get; set; }
public int Minutes { get; set; }
public int Seconds { get; set; }
public string FullTime() {
return $"{Hours} час. {Minutes} мин. {Seconds} сек.";
}
public string ShortTime() {
var m = Minutes + (Seconds >= 30? 1 : 0);
var h = Hours + (m > 59? 1 : 0);
if (m == 60) m = 0;
if (h == 24) h = 0;
return $"{h} час. {m} мин.";
}
public string HoursTime() {
var m = Minutes + (Seconds >= 30? 1 : 0);
var h = Hours + (m > 29? 1 : 0);
if (h == 24) h = 0;
return $"{h} час.";
}
}
}
Владимир Гречихин
Владимир Гречихин
83 127
Лучший ответ
int h, m, s;
scanf("%d%d%d", &h, &m, &s);
s += m * 60 + h * 3600;
m = (s + 30) / 60 % 60;
h = (s + 30) / 3600 % 24;
printf("%d ч. %d мин. \n", h, m);
h = (s + 1800) / 3600 % 24;
printf("%d ч. \n", h);
Александр Василичешен Спасибо большое
int h=25,m=60,s=60;

while (h<0 || h>23) { printf("\nВведите часы в интервале от 0 до 23..."); scanf("%d", &h); }
while (m<0 || m>59) { printf("\nВведите минуты в интервале от 0 до 59..."); scanf("%d", &m); }
while (s<0 || s>59) { printf("\nВведите секунды в интервале от 0 до 59..."); scanf("%d", &s); }

printf("\nТекущее время %02d : %02d : %02d", h, m, s);

printf("\nОкругляем значения");

if (s>29)
{ m++;
if (m==60) { m=0; h++;
if (h==24) h= 0; }
}

printf("\nТекущее время около %02d час %02d мин", h, m);
printf("\nТекущее время почти %02d час", h);
Emerald Brok Servis
Emerald Brok Servis
21 700
Александр Василичешен Спасибо большое