Loading...
GSS1609 avatar GSS1609 0 Точки

"On Time for the Exam" error without detail

Здравейте,

Опитах се да реша задачата "Навреме за изпит" (№9 в документа със задачи за упражнения, 3та - 17 май)

Един тест само ми гърми в Judge - и не е дадено обяснение за грешката 
 

Test #14 (Incorrect answer)

Time used: 0.009 s

Memory used: 12.04 MB

 

Получавам само грешката горе, без пример за грешния тест.

Това е кодът ми: https://pastebin.com/5ri8h4pG

 

Предварително благодаря за помощта!

GSS1609

Тагове:
0
Programming Basics with C#
RoumenRoussev avatar RoumenRoussev 121 Точки

Eто едно решение с което можеш да сравняваш.

using System;

namespace Temp
{
    class Program
    {
        static void Main(string[] args)
        {
            int examHour = int.Parse(Console.ReadLine());
            int examMinutes = int.Parse(Console.ReadLine());
            int arrivalHour = int.Parse(Console.ReadLine());
            int arrivalMinutes = int.Parse(Console.ReadLine());

            int examTime = (examHour * 60) + examMinutes;
            int arrivalTime = (arrivalHour * 60) + arrivalMinutes;
            int timeDiff = Math.Abs(examTime - arrivalTime);
            int diffHour = timeDiff / 60;
            int diffMinutes = timeDiff % 60;
            if (arrivalTime > examTime)
            {
                Console.WriteLine("Late");
                if (timeDiff < 60)
                {
                    Console.WriteLine($"{timeDiff} minutes after the start");
                }
                else if (timeDiff >= 60)
                {
                    Console.WriteLine($"{diffHour}:{diffMinutes:D2} hours after the start");
                }
            }
            else if (arrivalTime >= examTime - 30 && arrivalTime <= examTime)
            {
                Console.WriteLine("On time");
                if (timeDiff != 0 && timeDiff < 60)
                {
                    Console.WriteLine($"{timeDiff} minutes before the start");
                }
                else if (timeDiff != 0 && timeDiff >= 60)
                {
                    Console.WriteLine($"{diffHour}:{diffMinutes:D2} hours before the start");
                }
            }
            else if (arrivalHour < examTime - 30)
            {
                Console.WriteLine("Early");
                if (timeDiff < 60)
                {
                    Console.WriteLine($"{timeDiff} minutes before the start");
                }
                else if (timeDiff >= 60)
                {
                    Console.WriteLine($"{diffHour}:{diffMinutes:D2} hours before the start");
                }
            }
        }
    }
}
 

0
GSS1609 avatar GSS1609 0 Точки

Благодаря. Аз исках да разбера къде е грешката в моя код. Но ще пререша в по-опростен вариант..

0
RoumenRoussev avatar RoumenRoussev 121 Точки

Това е кодът ти оправен с добавени коментари.

using System;

namespace Test
{
    class Program
    {
        static void Main(string[] args)
        {
            int examTimeHour = int.Parse(Console.ReadLine());
            int examTimeMinutes = int.Parse(Console.ReadLine());
            int arrivalTimeHour = int.Parse(Console.ReadLine());
            int arrivalTimeMinutes = int.Parse(Console.ReadLine());

            // При такива задачи - най-важно е приравняването на стойности - към избрана отправна точка.
            // Трудно е да работим в часове и минути, затова е най-добре да приравним към минути (особено ако имаме "в минути" изчисления в условието).
            int examTime = examTimeMinutes + examTimeHour * 60;
            int arrivalTime = arrivalTimeMinutes + arrivalTimeHour * 60;
            int difference; //int difference; - само инициализираш, не присвояваш стойност

            if (arrivalTime > examTime)
            {
                Console.WriteLine("Late");
                difference = arrivalTime - examTime;
                if (difference < 60)
                {
                    Console.WriteLine($"{difference} minutes after the start"); // “mm minutes after the start”
                }
                else if (difference >= 60 && difference % 60 != 0) // твоят код - else if (difference > 60 && difference % 60 != 0) - липсва ти проверка на границата
                {
                    if (difference % 60 < 10)
                    {
                        Console.WriteLine($"{difference / 60}:0{difference % 60} hours after the start"); //“hh:mm hours after the start”
                    }
                    else
                    {
                        Console.WriteLine($"{difference / 60}:{difference % 60} hours after the start"); //“hh:mm hours after the start”
                    }
                }
                else if (difference >= 60 && difference % 60 == 0) // твоят код - else if (difference > 60 && difference % 60 == 0) - липсва ти проверка на границата
                {
                    Console.WriteLine($"{difference / 60}:00 hours after the start");
                }
            }
            else if (arrivalTime <= examTime && arrivalTime >= (examTime - 30))
            {
                difference = examTime - arrivalTime;
                if (difference == 0)
                {
                    Console.WriteLine("On time");
                }
                else
                {
                    Console.WriteLine("On time");
                    Console.WriteLine($"{difference} minutes before the start");
                }
            }
            else if (arrivalTime <= examTime && (examTime - 30) > arrivalTime)
            {
                difference = examTime - arrivalTime;
                Console.WriteLine("Early");
                if (difference >= 60)
                {
                    if (difference % 60 != 0)
                    {
                        if (difference % 60 < 10)
                        {
                            Console.WriteLine($"{difference / 60}:0{difference % 60} hours before the start"); //“hh:mm hours before the start”
                        }
                        else
                        {
                            Console.WriteLine($"{difference / 60}:{difference % 60} hours before the start"); //“hh:mm hours before the start”
                        }
                    }
                    else if (difference % 60 == 0)
                    {
                        Console.WriteLine($"{difference / 60}:00 hours before the start");
                    }
                }
                else
                {
                    Console.WriteLine($"{difference} minutes before the start"); // “mm minutes after the start”
                }
            }
        }
    }
}
 

0
GSS1609 avatar GSS1609 0 Точки

Благодаря много!

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.