Loading...
tissi avatar tissi 2 Точки

Проблем с *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.");
            }
        }

    }

}

Тагове:
0
Fundamentals Module
viktorv19 avatar viktorv19 17 Точки

На първо гледане реда, в който проверяваш за всеки 6-ти ученик.

напримет i = 12; int number = i % 10 ще бъде равно на 2 тъй като %10 връща единицата на числото

Според мен от този ред идва грешката в задачата. Освен това не е нужно веднага да закръгляваш стойностите след получаването им. 

Това е моето решение надявам се да ти помогне да си откриеш грешката. https://pastebin.com/q0ATJEWV

0
tissi avatar tissi 2 Точки

Колега, много ти благодаря!

Дебъгвах само с малки стойности, за да ми е лесно да изчислявам, изобщо не съм забелязала, че аз проверявам остатъкът да ми върне 6. В иф проверката трябва да бъде (i % 6 == 0). Тоест, ако деля на 6 да нямам никакъв остатък. Върнах си Сийлингът, където трябва и махнах Раунд, от където не трябва. Сега задачата е на 100%.Много, много благодаря за помощта в момент на блайнднес от моя страна, чувствам се тъпо, че имах нужда от помощ някой да обърне внимание на нещо толкова елементарно, но... мерси! Точка респект от мен! 

0
ThomasMore avatar ThomasMore -19 Точки

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/

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