Софтуерно Инженерство
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- при мене е същия.

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

Тагове:
VladoGenov avatar VladoGenov 44 Точки

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

0
VladoGenov avatar VladoGenov 44 Точки

Колега, открих проблема!
При кръгъл час, твоят код дава 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 44 Точки

Едната грешка идва от тук (ред 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 44 Точки

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

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

0
DStefanow avatar DStefanow 112 Точки

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

1