Loading...
aksjlka avatar aksjlka 0 Точки

07. Hotel Room

Добър ден,

Опитвам се да реша горе-споменатата задача и не мога да разбера къде е грешката(80/100) а подобна грешка която не мога да проверя се случва за поредна задача. Гледам отговорите на другите хора и навидно не намирам разлика.

Условие: https://prnt.sc/tn3s37

Мой код: 

using System;

namespace _07._Hotel_Room
{
    public class Program
    {
        public static void Main(string[] args)
        {
            string Month = Console.ReadLine();
            double Nights = double.Parse(Console.ReadLine());

            double ApartmentPrice = 0;
            double StudioPrice = 0;

            if (Month == "May" || Month == "October")
            {
                StudioPrice = Nights * 50;
                ApartmentPrice = Nights * 65;

                if (Nights > 7 && Nights <= 14)
                {
                    StudioPrice = StudioPrice - (StudioPrice / 100 * 5);
                }
                else if (Nights > 14)
                {
                    StudioPrice = StudioPrice - (StudioPrice / 100 * 30);
                }
            }
            else if (Month == "June" || Month == "September")
            {
                StudioPrice = Nights * 75.20;
                ApartmentPrice = Nights * 68.70;

                if (Nights >= 15)
                {
                    StudioPrice = StudioPrice - (StudioPrice / 100 * 20);
                }
            }
            else if (Month == " July" || Month == "August")
            {
                StudioPrice = Nights * 76;
                ApartmentPrice = Nights * 77;
            }

            if (Nights >= 14)
            {
                ApartmentPrice = ApartmentPrice - (ApartmentPrice / 100 * 10);
            }

            Console.WriteLine($"Apartment: {ApartmentPrice:F2} lv.");
            Console.WriteLine($"Studio: {StudioPrice:F2} lv.");
        }
    }
}

Работещ код: https://pastebin.com/iLyXPR4D

Благодаря.

Тагове:
0
Programming Basics with C#
RoumenRoussev avatar RoumenRoussev 121 Точки
Best Answer

Смени типа данни от double на decimal. Когато работиш с финансови операции ползвай decimal.

0
23/07/2020 13:27:58
aksjlka avatar aksjlka 0 Точки

Резултата е същият. Според мен не е от типовете на variables, може би ако има някакъв начин да видя input-а ще помогне

0
RoumenRoussev avatar RoumenRoussev 121 Точки

Два пъти го тествам и е от типа данни. Може би правиш нещо неправилно.

Резултат:

https://prntscr.com/tn7v1g

Прилагам кода:

using System;

namespace Temp
{
    class Program
    {
        static void Main(string[] args)
        {
            string month = Console.ReadLine();
            decimal nights = decimal.Parse(Console.ReadLine());

            decimal studioMO = 50m;
            decimal ApartmentMO = 65m;
            decimal studioJniS = 75.20m;
            decimal ApartmentJniS = 68.70m;
            decimal studioJA = 76m;
            decimal ApartmentJa = 77m;
            decimal priceStudio = 0m;
            decimal priceApartment = 0m;
            if (month == "May" || month == "October")
            {
                if (nights <= 7)
                {
                    priceStudio = studioMO;
                    priceApartment = ApartmentMO;
                }
                else if (nights > 7 && nights <= 14)
                {
                    priceStudio = studioMO * 0.95m;
                    priceApartment = ApartmentMO;
                }
                else if (nights > 14)
                {
                    priceStudio = studioMO * 0.70m;
                    priceApartment = ApartmentMO * 0.9m;
                }
            }
            else if (month == "June" || month == "September")
            {
                if (nights >= 15)
                {
                    priceStudio = studioJniS * 0.80m;
                    priceApartment = ApartmentJniS * 0.9m;
                }
                else if (nights < 15)
                {
                    priceStudio = studioJniS;
                    priceApartment = ApartmentJniS;
                }
            }
            else if (month == "July" || month == "August")
            {
                if (nights >= 15)
                {
                    priceStudio = studioJA;
                    priceApartment = ApartmentJa * 0.90m;
                }
                else if (nights < 15)
                {
                    priceStudio = studioJA;
                    priceApartment = ApartmentJa;
                }
            }


            Console.WriteLine($"Apartment: {(priceApartment * nights):f2} lv.");
            Console.WriteLine($"Studio: {(priceStudio * nights):f2} lv.");
        }
    }
}
 

 

0
aksjlka avatar aksjlka 0 Точки

Възможно ли е да е от decimal.Multiply което използвам.
 

using System;

namespace _07._Hotel_Room
{
    public class Program
    {
        public static void Main(string[] args)
        {
            string Month = Console.ReadLine();
            decimal Nights = decimal.Parse(Console.ReadLine());

            decimal ApartmentPrice = 0;
            decimal StudioPrice = 0;

            if (Month == "May" || Month == "October")
            {
                StudioPrice = Nights * 50;
                ApartmentPrice = Nights * 65;

                if (Nights > 7 && Nights <= 14)
                {
                    StudioPrice = StudioPrice - (StudioPrice / 100 * 5);
                }
                else if (Nights > 14)
                {
                    StudioPrice = StudioPrice - (StudioPrice / 100 * 30);
                }
            }
            else if (Month == "June" || Month == "September")
            {
                //StudioPrice = Nights * 75.20;
                
                StudioPrice = Decimal.Multiply(Nights, 75.20m);
                ApartmentPrice = Decimal.Multiply(Nights, 68.70m);

                //ApartmentPrice = Nights * 68.70;

                if (Nights >= 15)
                {
                    StudioPrice = StudioPrice - (StudioPrice / 100 * 20);
                }
            }
            else if (Month == " July" || Month == "August")
            {
                StudioPrice = Nights * 76;
                ApartmentPrice = Nights * 77;
            }

            if (Nights >= 14)
            {
                ApartmentPrice = ApartmentPrice - (ApartmentPrice / 100 * 10);
            }

            Console.WriteLine($"Apartment: {ApartmentPrice:F2} lv.");
            Console.WriteLine($"Studio: {StudioPrice:F2} lv.");
        }
    }
}
 

0
bambi avatar bambi 43 Точки

Накрая където проверяваш броя на нощувки да е по-голям от 14 за апартамента - махни равното. Трябва да е по-голямо от 14, без да включва 14, т.е. над 14.

if (Nights > 14)
1
25/07/2020 14:14:53
krum_43 avatar krum_43 756 Точки

Тук сметките не са големи,но при използване на тип double още на първият нулев тест дава грешен отговор.

Явно за по-голяма сигурност е необходимо всички цени да са от тип decimal.

0
AlexKadiyski avatar AlexKadiyski 16 Точки

using System;

namespace _07._Hotel_Room
{
    class Program
    {
        static void Main(string[] args)
        {
            string month = Console.ReadLine();
            int sleepDays = int.Parse(Console.ReadLine());

            double apartment = 0.00;
            double studio = 0.00;

            double totalA = 0.00;
            double totalS = 0.00;

            switch (month)
            {
                case "May":
                case "October":
                    apartment = 65;
                    studio = 50;

                    if (sleepDays <= 7)
                    {
                        totalA = apartment * sleepDays;
                        totalS = studio * sleepDays;
                    }
                    else if (sleepDays > 7 && sleepDays <= 14)
                    {
                        totalS = (studio * sleepDays) * 0.95;
                        totalA = apartment * sleepDays;
                    }
                    else if (sleepDays > 14)
                    {
                        totalS = (studio * sleepDays) * 0.70;
                        totalA = (apartment * sleepDays) * 0.90;
                    }
                    break;
                case "June":
                case "September":
                    apartment = 68.70;
                    studio = 75.20;

                    if (sleepDays <= 14)
                    {
                        totalA = apartment * sleepDays;
                        totalS = studio * sleepDays;
                    }
                    else if (sleepDays > 14)
                    {
                        totalS = (studio * sleepDays) * 0.80;
                        totalA = (apartment * sleepDays) * 0.90;
                    }
                    break;
                case "July":
                case "August":
                    apartment = 77;
                    studio = 76;

                    if (sleepDays <= 14)
                    {
                        totalA = apartment * sleepDays;
                        totalS = studio * sleepDays;
                    }
                    else if (sleepDays > 14)
                    {
                        totalA = (apartment * sleepDays) * 0.90;
                        totalS = studio * sleepDays;
                    }
                    break;
            }

            Console.WriteLine($"Apartment: {totalA:f2} lv.");
            Console.WriteLine($"Studio: {totalS:f2} lv.");
        }
    }
}
 

0
asad664 avatar asad664 47 Точки

Your style is very unique in hotel Agadir comparison to other folks I have read stuff from. Thanks for posting when you've got the opportunity, Guess I will just book mark this blog.

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