Loading...
Penev72 avatar Penev72 1 Точки

C# OOP Polymorphism Exercise => 2. Vehicles Extension

Привет колеги,

цяла вечер се мъча да открия грешката на тази задача ама не става. Гърми първият вход 75/100, прегледах условието сто пъти, дебъгвах 3 часа и не мога да го измъдря. Ще съм много благодарен, ако някой успее да открие къде бъркам . 

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

Базовият клас Vehicle : https://pastebin.com/RXta6VrX

Car: https://pastebin.com/qAzxscuB

Truck: https://pastebin.com/cKJhUU5u

Bus: https://pastebin.com/Eh9AD3wv

StartUp: https://pastebin.com/YGi26YfR

 

 

Условие:

1.Vehicles Extension

Use your solution of the previous task for the starting point and add more functionality. Add a new vehicle – Bus. Add to every vehicle a new property – tank capacity. A vehicle cannot start with or refuel above its tank capacity.

If you try to put more fuel in the tank than the available space, print on the console "Cannot fit {fuel amount} fuel in the tank" and do not add any fuel in the vehicle’s tank. If you try to create a vehicle with more fuel than its tank capacity, create it but start with an empty tank.

Add a new command for the bus. You can drive the bus with or without people. With people, the air-conditioner is turned on and its fuel consumption per kilometer is increased by 1.4 liters. If there are no people in the bus, the air-conditioner is turned off and does not increase the fuel consumption.

Finally, add a validation for the amount of fuel given to the Refuel command – if it is 0 or negative, print "Fuel must be a positive number".

Input

  • On the first three lines you will receive information about the vehicles in the format:
  • "Vehicle {initial fuel quantity} {liters per km} {tank capacity}"
  • On the fourth line – the number of commands N that will be given on the next N lines
  • On the next N lines – commands in format:
  • "Drive Car {distance}"
  • "Drive Truck {distance}"
  • "Drive Bus {distance}"
  • "DriveEmpty Bus {distance}"
  • "Refuel Car {liters}"
  • "Refuel Truck {liters}"
  • "Refuel Bus {liters}"

Output

  • After each Drive command, if there was enough fuel, print on the console a message in the format:
  • "Car/Truck travelled {distance} km"
  • If there was not enough fuel, print:
  • "Car/Truck needs refueling"
  • If you try to refuel with an amount ≤ 0 print:
  • "Fuel must be a positive number"
  • If the given fuel cannot fit in the tank, print:
  • "Cannot fit {fuel amount} fuel in the tank"
  • After the End command, print the remaining fuel for all vehicles, rounded to 2 digits after the floating point in the format:
  • "Car: {liters}"
  • "Truck: {liters}"
  • "Bus: {liters}"

Example

Input

Output

Car 30 0,04 70

Truck 100 0,5 300

Bus 40 0,3 150

8

Refuel Car -10

Refuel Truck 0

Refuel Car 10

Refuel Car 300

Drive Bus 10

Refuel Bus 1000

DriveEmpty Bus 100

Refuel Truck 1000 

Fuel must be a positive number

Fuel must be a positive number

Cannot fit 300 fuel in the tank

Bus travelled 10 km

Cannot fit 1000 fuel in the tank

Bus needs refueling

Cannot fit 1000 fuel in the tank

Car: 40.00

Truck: 100.00

Bus: 23.00

Тагове:
0
C# OOP Basics 21/04/2021 20:54:18
Elena123456 avatar Elena123456 235 Точки
Best Answer

Здравейте, прочетох още веднъж условието на задачата и прегледах начина Ви на създаване на класовете. На пръв поглед всичко ми изглежда наред. И аз няколко пъти получих 75 точки, и проблема ми беше в StartUp. Предлагам да пренапишете логиката в него, като при  създаването на превозното средство да използвате Factory design pattern. В моето условие изрично го пишеше, че в тази задача трябва да се използва точно този патърн при създаването на превозното средство. Това означава, че трябва да имате отделен клас с метод със следните параметри( тип превозно средство, гориво, капацитет на резервоара и т.н) и според различните типове самият метод  създава  различно превозно средство, като следователно връща IVehicle или само Vehicle във вашия случай.

И моля обърнете внимание дали закръгляте с F2 на местата, където е необходимо.

И един съвет- добра практика е да нямаме висящи числа в кода, а да ги поставяме в константи,  стоящи над конструктора.

Поздрави!

1
22/04/2021 10:30:57
Penev72 avatar Penev72 1 Точки

Много Ви благодаря за отделеното време и съветите !

Ще рефакторирам кода и ще го пробвам пак

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