Problem 1. Vehicles от Polymorphism
Как ли не го въртях, с decimal, с double и все гърмят тестове 1, 4 и последния.
Една тема има в Java OOP , ама какво означава "Задай на decimal format "0.######"" не разбрах.
Виждате ли нещо грешно в кода?...
Как ли не го въртях, с decimal, с double и все гърмят тестове 1, 4 и последния.
Една тема има в Java OOP , ама какво означава "Задай на decimal format "0.######"" не разбрах.
Виждате ли нещо грешно в кода?...
добавих StringBuilder и промених всичко да е double и мина ето линкове към отделните класове:
https://pastebin.com/DxdzpEA8 - Program класа
https://pastebin.com/SRx1krTS - Vehicle класа
https://pastebin.com/FZ6jZiPe - Truck класа
https://pastebin.com/1ArqfncA - Car класа
Мисля че не ти минаваше заради StringBuilder щото сигурно Judge очаква нещо чак когати свършат командите, а не след всяка команда. Както виждаш не съм пипал особено класовете просто decimal > double, там където се взима нещо от конзолата .Trim(), при връщане също .Trim() заради StringBuilder-а и това е. Също така мисля че 'емигрирай' към използване на StringBuilder щото при ООП Judge се сърди + StringBuilder е много по-бърз от стринг и ще помогне програмата ти да работи бързо.
Искам да кажа че това с кастването не е добра практика вместо това можеше да направиш Vehicle car = new Car() и пак щеше да работи:
string[] part = Console.ReadLine().Trim().Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
string[] part2 = Console.ReadLine().Trim().Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
Vehicle car = new Car(double.Parse(part[1]), double.Parse(part[2]));
Vehicle truck = new Truck(double.Parse(part2[1]), double.Parse(part2[2]));
На пръв поглед виждам че в конструктора на колата не приемаш капацитета на резервоара като параметър, и съответно не проверяваш дали количеството гориво ще се побере в резервоара.
Извинявам се, че не дадох условие, но няма капацитет на резервоара - взима колкото му сипеш. ..:)
Много благодаря!
За StringBuilder - от това, което прочетох разбирам, че е дава ускорение при множество операции .Също е добре да се ползва при неизвестен брой стрингове за съединяване. За 2-3 няма нужда. Самото инициализиране на StringBuilder сваля производителноста.
Иначе правя някакви опити за FactoryPattern, ама кръщаването на метод Factory не е достатъчно...
https://www.dotnetperls.com/factory тука според мен най-просто се показва Factory Pattern-а. Методът просто щеше да е по-добре ако беше клас, както е на линк-а, и този pattern най-често се използва със reflection, което ще го учите в C# OOP Advanced.
Благодаря!
Split(), Trim(), StringBuilder(), не помагат.
Ключът е да се ползва double вместо decimal. Откъде идва разликата не знам. Интересно какъв вход подават.
Навсякъде по задачите ползвам decimal ( нали е по-точно), за тази явно не става.