Професионална програма
Loading...
+ Нов въпрос
ioanna.konova avatar ioanna.konova 35 Точки

Задача On Time for the Exam от Conditional Statements Advanced - Exercise - 87/100 в Judge

Здравейте,

Някой може ли да открие къде е грешката в кода ми - https://pastebin.com/XEbD5sRA?fbclid=IwAR19RxZZQI_bg3jxmpCSuhx3SXLH-FSFAxL14nfrMe8LhcEHzsgB6MRIQ7c? Отговорите ми са верни, но Judge ми дава 87/100 и то при тестове 2 и 3, при които не мога да видя къде е грешката.

Условието на задачата:

8.Навреме за изпит

Студент трябва да отиде на изпит в определен час (например в 9:30 часа). Той идва в изпитната зала в даден час на пристигане (например 9:40). Счита се, че студентът е дошъл навреме, ако е пристигнал в часа на изпита или до половин час преди това. Ако е пристигнал по-рано повече от 30 минути, той е подранил. Ако е дошъл след часа на изпита, той е закъснял. Напишете програма, която прочита време на изпит и време на пристигане и отпечатва дали студентът е дошъл навреме, дали е подранил или е закъснял и с колко часа или минути е подранил или закъснял.

Вход

От конзолата се четат 4 цели числа (по едно на ред), въведени от потребителя:

  • Първият ред съдържа час на изпита – цяло число от 0 до 23.
  • Вторият ред съдържа минута на изпита – цяло число от 0 до 59.
  • Третият ред съдържа час на пристигане – цяло число от 0 до 23.
  • Четвъртият ред съдържа минута на пристигане – цяло число от 0 до 59.

Изход

На първият ред отпечатайте:

  • Late”, ако студентът пристига по-късно от часа на изпита.
  • On time”, ако студентът пристига точно в часа на изпита или до 30 минути по-рано.
  • Early”, ако студентът пристига повече от 30 минути преди часа на изпита.

Ако студентът пристига с поне минута разлика от часа на изпита, отпечатайте на следващия ред:

  •  

“mm minutes after the start” за закъснение под час.

  • “hh:mm hours after the start” за закъснение от 1 час или повече. Минутите винаги печатайте с 2 цифри, например “1:03”.
0
Programming Basics
Axiomatik avatar Axiomatik 1354 Точки

Error is caused during the calculation of the final time-output. Use modular and standard division for the time-output and all of the tests will be OK:

 

using System;

namespace OnTimeForTheExam
{
    class Program
    {
        static void Main(string[] args)
        {
            int hourOfExam = int.Parse(Console.ReadLine());
            int minuteOfExam = int.Parse(Console.ReadLine());
            int hourOfArrived = int.Parse(Console.ReadLine());
            int minuteOfArrived = int.Parse(Console.ReadLine());

            int totalminuteOfExam = (hourOfExam * 60) + minuteOfExam;
            int totalminuteOfArrived = (hourOfArrived * 60) + minuteOfArrived;
            int different = totalminuteOfExam - totalminuteOfArrived;

            if (totalminuteOfArrived == totalminuteOfExam)
            {
                Console.WriteLine("On time");
            }
            else if (different >= 0 && different <= 30)
            {
                Console.WriteLine("On time");
                Console.WriteLine($"{different} minutes before the start");

            }
            else if (different > 30)
            {
                if (different < 60)
                {
                    Console.WriteLine("Early");
                    //Console.WriteLine($"{totalminuteOfExam - totalminuteOfArrived} minutes before the start");
                    Console.WriteLine($"{different} minutes before the start");
                }
                else
                {
                    Console.WriteLine("Early");
                    int hour = different / 60;
                    int minutes = different % 60;

                    //Console.WriteLine($"{hourOfExam - hourOfArrived}:{minuteOfExam - minuteOfArrived:d2} hours before the start");
                    Console.WriteLine($"{hour}:{minutes:D2} hours before the start");
                }
            }
            else if (different < 0)
            {
                int differentAbs = Math.Abs(different);

                if (differentAbs < 60)
                {
                    Console.WriteLine("Late");
                    Console.WriteLine($"{differentAbs} minutes after the start");
                }
                else
                {
                    int hour = differentAbs / 60;
                    int minutes = differentAbs % 60;
                    Console.WriteLine("Late");
                    Console.WriteLine($"{hour}:{minutes:d2} hours after the start");
                }

                //if (Math.Abs(different) < 60)
                //{
                //    Console.WriteLine("Late");
                //    Console.WriteLine($"{Math.Abs(totalminuteOfExam - totalminuteOfArrived)} minutes after the start");
                //}
                //else
                //{
                //    Console.WriteLine("Late");
                //    Console.WriteLine($"{Math.Abs(hourOfExam - hourOfArrived)}:{Math.Abs(minuteOfExam - minuteOfArrived):d2} hours after the start");
                //}
            }
        }
    }
}

 

 

1