Loading...
DStefanow avatar DStefanow 112 Точки

03. On time for the Exam- 06 March - проблем с изхода

Здравейте колеги,

малко страничен въпрос, ама се надявам да ми помогнете. Като пусна задачата в Judge ми дава 81 точки и реших да сваля тестовете и да видя, какъв е съответно входа и изхода и се оказа, че изхода от програмата ми напълно съвпада с очаквания и не мога да разбере, къде е проблема. Ето кода: http://pastebin.com/1nvgnBLU (знам, че е бая дълго написано и има 100% по- оптимизиран вариант, ама това не ми е проблема сега).

Входовете при които става проблем са:

1. 9 00 10 30 - изходът е Late 1:30 hours after the start - при мене е същия.

2. 9 00 8 30- изходът е On time 30 minutes before the start - при мене е същия.

3. 10 00 10 00 - изходът е On time- при мене е същия.

Благодаря предварително! (:

Тагове:
0
Programming Basics
VladoGenov avatar VladoGenov 45 Точки

Странно, тествах ти кода, при мен работи, но Judge-a не ми дава да разгледам теста (3 броя), при който той е решил, че намира грешки.
Но ето ти засега моето решение, Judge-a ми даде 100 точки, като сравниш кода, ако може с нещо да ти бъде полезно, да откриеш проблема: http://pastebin.com/JaKpCp0D

0
VladoGenov avatar VladoGenov 45 Точки

Колега, открих проблема!
При кръгъл час, твоят код дава 2 изхода:
16
0
15
0
Early
1:00 hours before the start
60 minutes before the start - Incorrect Output

Press any key to continue . . .

0
VladoGenov avatar VladoGenov 45 Точки

Едната грешка идва от тук (ред 64-70 от твоят код):
           Console.WriteLine("Early");
            if (m == minuteArrive)
                    {
                        Console.WriteLine("{0}:00 hours before the start", Math.Abs(h - hourArrive));
                        return;
                    }
                    Console.WriteLine("{0} minutes before the start", 60 - minuteArrive + m);

Не си сложил втория печат в ELSE и така, когато имаш само минути (0-59), ти се отпечатва коректно, но когато имаш час и нещо, хем печаташ часа, хем след това минутите.
Ето коректната проверка:

                      if (m == minuteArrive)
                            {
                            Console.WriteLine("{0}:00 hours before the start", Math.Abs(h - hourArrive));

                            }
                        else
                            {
                            Console.WriteLine("{0} minutes before the start", 60 - minuteArrive + m);
                            }

2
DStefanow avatar DStefanow 112 Точки

Не е от там грешката, защото има return след това, аз го пробвах и с else резултатът е същия, в крайна сметка ще питам някой от екипа!

Мерси все пак за хелпа! (:

0
VladoGenov avatar VladoGenov 45 Точки

От там е едната грешка със сигурност, понеже без else печата едновременно:
Early
1:00 hours before the start
60 minutes before the start

Но другата грешка нямах време да я открия, за което се извинявам!
 

0
DStefanow avatar DStefanow 112 Точки

Включил съм return, който директно прекратява програмата, така че не е от него. Направих друго решение, което мина коректно.

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