Проблем с *Padawan Equipment - C# - Basic Syntax, Conditional Statements and Loops - Exercise
Моля ви да ми помогнете с моя код, който ми изкарва само 10% , нулеви тестовете минават, плюс първи тест, всички останали гърмят. Не искам други верни решения с различен подход. Искам да знам защо не става.
Моят проблем е, че по условие допълнителните лазерни мечове (10% от учениците) според условие трябва да се закръглят към по-горния инт, но не излизат дори нулевите, ако не е Раунд.
На последния ред от условието пише: All prices must be rounded to two digits after the decimal point. (да разбирам, че дори цените в условието трябва да се направи, дори и на крайните в аутпута)
Обаче ако не направя Math.Ceiling на аутпута не излизат нулевите дори.
Работих с децимал, смених го да пробвам да не би да иска да е дабъл, ама нъцки.
Оставила съм си коментарите под всеки един ред да обясня моя подход към задачата. Ще оценя да ми кажете къде нещата се разминават.
using System;
namespace FundamentalsRefresh
{
class Program
{
static void Main(string[] args)
{
double budget = double.Parse(Console.ReadLine());
// бюджет
int studentsCount = int.Parse(Console.ReadLine());
//брой ученици
double lightsaberPrice = Math.Round(double.Parse(Console.ReadLine()),2);
// цена за лазерни мечове на бройка закръглена до 2ри знак
double robePrice = Math.Round(double.Parse(Console.ReadLine()),2);
//цена на роба за бройка закръглена до 2-ри знак
double beltPrice = Math.Round(double.Parse(Console.ReadLine()), 2);
// цена на колан закръглена до 2-ри знак
// All prices must be rounded to two digits after the decimal point - казва последния ред
double bill = 0;
// сметка
double extraLighsabers = Math.Round((0.1 * studentsCount),2);
// допълнителни лазерни мечове нужни закръглени до 2ри знак
//buy 10% more (taken from the students count), rounded up to the next integer
//редно е да е Ceiling, но така не излизат нулевите дори
bill += extraLighsabers * lightsaberPrice;
// добавям първо към сметката допълнителните лазерни мечове
for (int i = 1; i <= studentsCount; i++)
{
//обикаляме броя ученици и добавяме по едно от всеки предмет на ученик
bill += robePrice;
bill += lightsaberPrice;
bill += beltPrice;
if(i % 10 == 6)
{
// за всеки 6-ти ученик приспадаме цената на един колан от сметката
bill = bill - beltPrice;
}
}
if(budget >= bill)
{
// ако бюджет е повече от сметката се принтира сметката
bill = Math.Ceiling(bill); // ако не се повдигне нагоре не излизат нулевите - но условието казва All prices must be rounded to two digits after the decimal point - нищо за по-горно число, единственото споменаване за Сийлинг е при 10-те процента, където пък там не работи.
Console.WriteLine($"The money is enough - it would cost {bill:f2}lv. ");
}
else
{// ако ли не изчислява колко не достигат и се принтира
double difference = bill - budget;
difference = Math.Ceiling(difference); // същата работа като в горния блок код
Console.WriteLine($"Ivan Cho will need {difference:f2}lv more.");
}
}
}
}
Колега, много ти благодаря!
Дебъгвах само с малки стойности, за да ми е лесно да изчислявам, изобщо не съм забелязала, че аз проверявам остатъкът да ми върне 6. В иф проверката трябва да бъде (i % 6 == 0). Тоест, ако деля на 6 да нямам никакъв остатък. Върнах си Сийлингът, където трябва и махнах Раунд, от където не трябва. Сега задачата е на 100%.Много, много благодаря за помощта в момент на блайнднес от моя страна, чувствам се тъпо, че имах нужда от помощ някой да обърне внимание на нещо толкова елементарно, но... мерси! Точка респект от мен!
Fighting to find inspiration to get going? Not certain where to begin? Cutoff time looking? Do whatever it takes not to be overwhelmed! Research Prospect proposal forming organizations have helped countless understudies achieve needed outcomes. Snap here to discover support from writers holding either a Masters or PhD degree from a supposed UK school.
By: https://articleoftheweek.com/2020/02/12/how-to-recover-account-and-interesting-facts-about-mojang-minecraft/