Софтуерно Инженерство
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 Точки

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

Сега видях и return-a smiley
Радвам се, че си намерил решението.
А по принцип извън задачата, когато искаш да прекъснеш, не е ли по-добре да използваш <break>?!
Return-a не се ли ползва по-скоро при процедури/функции да прекрати изпълнението им и да върне променлива/и?

0
DStefanow avatar DStefanow 112 Точки

До колкото знам break се ползва в логически условия, които са в тялото на някакъв цикъл, а return директно слага край на метода и излиза от него. В случая искаме да отпечатаме резултата и после да прекратим програмата.

1
stovensssa avatar stovensssa 0 Точки

Здравейте,кодери.. може ли тестовете от judge, защото не успях да намеря последната си грешка.. Благодаря предварително ... ето го кода: https://pastebin.com/04wdrH43

0
19/07/2017 06:14:56