9. *Padawan Equipment C#
1.*Padawan Equipment
Yoda is starting his newly created Jedi academy. So, he asked master Ivan Cho to buy the needed equipment. The number of items depends on how many students will sign up. The equipment for the Padawan contains lightsabers, belts and robes.
You will be given the amount of money Ivan Cho has, the number of students and the prices of each item. You have to help Ivan Cho calculate if the money he has is enough to buy all of the equipment, or how much more money he needs.
Because the lightsabres sometimes brake, Ivan Cho should buy 10% more, rounded up to the next integer. Also, every sixth belt is free.
Input / Constraints
The input data should be read from the console. It will consist of exactly 5 lines:
- The amount of money Ivan Cho has – floating-point number in range [0.00…1,000.00]
- The count of students – integer in range [0…100]
- The price of lightsabers for a single sabre – floating-point number in range [0.00…100.00]
- The price of robes for a single robe – floating-point number in range [0.00…100.00]
- The price of belts for a single belt – floating-point number in range [0.00…100.00]
The input data will always be valid. There is no need to check it explicitly.
Output
The output should be printed on the console.
- If the calculated price of the equipment is less or equal to the money Ivan Cho has:
- "The money is enough - it would cost {the cost of the equipment}lv."
- If the calculated price of the equipment is more than the money Ivan Cho has:
- "Ivan Cho will need {neededMoney}lv more."
- All prices must be rounded to two digits after the decimal point.
Examples
Input |
Output |
Comments |
100 2 1.0 2.0 3.0 |
The money is enough - it would cost 13.00lv. |
Needed equipment for 2 padawans : sabresPrice*(studentsCount + 10%) + robesPrice * (studentsCount) + beltsPrice*(studentsCount-freeBelts) 1*(3) + 2*(2) + 3*(2) = 13.00 13.00 <= 100 – the money will be enough. |
Input |
Output |
Comments |
100 42 12.0 4.0 3.0 |
Ivan Cho will need 737.00lv more. |
Needed equipment for 42 padawans: 12*47 + 4*42 + 3*35 = 837.00 837 > 100 – need 737.00 lv. more. |
Здравейте . Някой може ли да погледне този код и да каже може ли да се рефактурира и да се направи да работи или логиката е грешка.
@кnoteva ,
благодаря за разяснението как ще намерим броя на безплатните колани(на всеки пет един е безплатен): като разделим броя на всички студенти на 6. След това трябва от общата сума за всички колани да извадим сумата на безплатните колани и така ще получим сумата на коланите след отстъпката.
Щях да си спестя доста време в четене на статии за дискаунти и изчислявания на проценти, ако бях видяла по-рано темата. :)
Поздрави!
Елена
using System;
namespace PadawanEquipment
{
class MainClass
{
public static void Main(string[] args)
{
double moneyBalance = double.Parse(Console.ReadLine());
int countStudent = int.Parse(Console.ReadLine());
double priceLightSaber = double.Parse(Console.ReadLine());
double priceRobe = double.Parse(Console.ReadLine());
double priceBelt = double.Parse(Console.ReadLine());
double totalLightSabersPrice = Math.Ceiling(countStudent+0.1*countStudent) * priceLightSaber;
double totalRobesPrice =countStudent * priceRobe;
double totalBeltPrice = countStudent * priceBelt;
int freeBelt =(countStudent / 6);
double totalPriceOfAll = totalLightSabersPrice + totalRobesPrice + (totalBeltPrice - (freeBelt*priceBelt));
if (moneyBalance >= totalPriceOfAll)
{
Console.WriteLine($"The money is enough - it would cost {totalPriceOfAll:f2}lv.");
}
else if (moneyBalance < totalPriceOfAll)
{
Console.WriteLine($"Ivan Cho will need {totalPriceOfAll-moneyBalance:f2}lv more.");
}
}
}
}