On time for exam 93/100 и незнам защо
Здравейте,
някъде в кода имам грешка, която не мога да открия.
Студент трябва да отиде на изпит в определен час (например в 9:30 часа). Той идва в изпитната зала в даден час на пристигане (например 9:40). Счита се, че студентът е дошъл навреме, ако е пристигнал в часа на изпита или до половин час преди това. Ако е пристигнал по-рано повече от 30 минути, той е подранил. Ако е дошъл след часа на изпита, той е закъснял. Напишете програма, която прочита време на изпит и време на пристигане и отпечатва дали студентът е дошъл навреме, дали е подранил или е закъснял и с колко часа или минути е подранил или закъснял.
Вход
От конзолата се четат 4 цели числа (по едно на ред), въведени от потребителя:
- Първият ред съдържа час на изпита – цяло число от 0 до 23.
- Вторият ред съдържа минута на изпита – цяло число от 0 до 59.
- Третият ред съдържа час на пристигане – цяло число от 0 до 23.
- Четвъртият ред съдържа минута на пристигане – цяло число от 0 до 59.
Изход
На първият ред отпечатайте:
- “Late”, ако студентът пристига по-късно от часа на изпита.
- “On time”, ако студентът пристига точно в часа на изпита или до 30 минути по-рано.
- “Early”, ако студентът пристига повече от 30 минути преди часа на изпита.
Ако студентът пристига с поне минута разлика от часа на изпита, отпечатайте на следващия ред:
- “mm minutes before the start” за идване по-рано с по-малко от час.
- “hh:mm hours before the start” за подраняване с 1 час или повече. Минутите винаги печатайте с 2 цифри, например “1:05”.
- “mm minutes after the start” за закъснение под час.
- “hh:mm hours after the start” за закъснение от 1 час или повече. Минутите винаги печатайте с 2 цифри, например “1:03”.
Това е моето решение
using System;
namespace Exercise3_on_time
{
class Program
{
static void Main(string[] args)
{
int hourExam = int.Parse(Console.ReadLine());
int minExam = int.Parse(Console.ReadLine());
int hourArrive = int.Parse(Console.ReadLine());
int minArrive = int.Parse(Console.ReadLine());
double timeExamMinutes = hourExam * 60 + minExam;
double timeArriveMinutes = hourArrive * 60 + minArrive;
double hours = 0;
double minutes = 0;
if (timeExamMinutes == timeArriveMinutes)
{
Console.WriteLine("On time");
}
else if (timeArriveMinutes <= timeExamMinutes && timeExamMinutes - timeArriveMinutes > 30)
{
Console.WriteLine("Early");
hours = Math.Floor((timeExamMinutes - timeArriveMinutes) / 60);
minutes = (timeExamMinutes - timeArriveMinutes) % 60;
if (hours == 0 && minutes < 10)
{
Console.WriteLine($"0{minutes} minutes before the start");
}
else if (hours == 0 && minutes >= 10)
{
Console.WriteLine($"{minutes} minutes before the start");
}
else if (hours >= 1 && minutes < 10)
{
Console.WriteLine($"{hours}:0{minutes} hours before the start");
}
else if (hours >= 1 && minutes >= 10)
{
Console.WriteLine($"{hours}:{minutes} hours before the start");
}
}
else if (timeArriveMinutes > timeExamMinutes)
{
Console.WriteLine("Late");
hours = Math.Floor((timeArriveMinutes - timeExamMinutes) / 60);
minutes = (timeArriveMinutes - timeExamMinutes) % 60;
if (hours == 0 && minutes < 10)
{
Console.WriteLine($"0{minutes} minutes after the start");
}
else if (hours == 0 && minutes >= 10)
{
Console.WriteLine($"{minutes} minutes after the start");
}
else if (hours >= 1 && minutes < 10)
{
Console.WriteLine($"{hours}:0{minutes} hours after the start");
}
else if (hours >= 1 && minutes >= 10)
{
Console.WriteLine($"{hours}:{minutes} hours after the start");
}
}
else if (timeExamMinutes - timeArriveMinutes <= 30)
{
Console.WriteLine("On time");
hours = Math.Floor((timeExamMinutes - timeArriveMinutes) / 60);
minutes = (timeExamMinutes - timeArriveMinutes) % 60;
Console.WriteLine($"{minutes} minutes before the start");
}
}
}
}
Моля за съвет :)
Благодаря!