Loading...
kkaraivanov avatar kkaraivanov 486 Точки

Малко помощ ако може за Conditional Statements and Loops - Exercise - Vacation

Условието на задачата е:

--------------------------------------------------------------------------------------------------------------

You are given a group of people, type of the group, on which day of the week they are going to stay. Based on that information calculate how much they have to pay and print that price on the console. Use the table below. In each cell is the price for a single person. The output should look like that: “Total price: {price}”. The price should be formatted to the second decimal point.

 

Friday

Saturday

Sunday

Students

8.45

9.80

10.46

Business

10.90

15.60

16

Regular

15

20

22.50

There are also discounts based on some conditions:

  • Students – if the group is bigger than or equal to 30 people you should reduce the total price by 15%
  • usiness – if the group is bigger than or equal to  100 people 10 of them can stay for free.
  • Regular – if the group is bigger than or equal to 10 and less than or equal to 20 reduce the total price by 5%

You should reduce the prices in that EXACT order

--------------------------------------------------------------------------------------------------------------

ТУК на този линк поствам 3 решения на които Judge ми дава 83 точки. Молбата ми е да помогнете да открия къде бъркам..... Благодаря предварително.

Тагове:
0
Module: C# Advanced
knoteva avatar knoteva 1081 Точки

Здарвей,

Мисля, че може да е проблем в тестовете в judge. Код, който ми е давал 100 тгочки, сега ми дава 83. 

1
kkaraivanov avatar kkaraivanov 486 Точки

Благодаря!

0
Vicizlat avatar Vicizlat 15 Точки

И аз мисля, че има някакъв проблем в Judge. На мен също ми дава 83 точки, а решението би трябвало да работи. Все пак не е толкова сложна задача.

Грешките ми ги дава на 4-тия и последния тест (нулевите тестове не ги броя). Ако и при други е точно на тези тестове, бих бил 99% сигурен, че проблема е в Judge.

0
nickwork avatar nickwork 657 Точки

Привет колеги, Judge e ok, когато става въпрос за пари използвайте decimal, а не double.

1
Vicizlat avatar Vicizlat 15 Точки

Благодаря колега. Наистина така работи. Ето за това не мога да разбера, защо не ни е позволено да видим входните данни и очаквания резултат... Тук явно става въпрос за някаква много малка разлика.

0
16/01/2020 20:32:36
kkaraivanov avatar kkaraivanov 486 Точки

Здравейте колеги и благодаря за съдействието. Тествах различни решения и стуктурира на кода и все още търся грешката която Judge  ми връща. По съвет на колегата nickwork  ползвах децимал вместо дабъл променливи. Благодаря nickwork , но качих точките от 83/100 на 91/100 което все пак е прогрес. Ето и последния сорс който тествах и ми върна 91/100, като ми връща грешка само на последната проверка:

using System;

namespace Vacation
{
    class Program
    {
        static void Main(string[] args)
        {
            int groupPeople = int.Parse(Console.ReadLine());
            string groupPeopleType = Console.ReadLine();
            string dayOfWeek = Console.ReadLine();

            string[,] table = { { "", "Friday", "Saturday", "Sunday" },
                                { "Students", "8.45", "9.80", "10.46"},
                                { "Business", "10.90", "15.60", "16"},
                                { "Regular", "15", "20", "22.50"} };

            for (int i = 0; i < table.GetLength(0); i++)
            {
                for (int j = 0; j < table.GetLength(1); j++)
                {
                    if (table[0, j].Equals(dayOfWeek) && table[i, 0].Equals(groupPeopleType))
                    {
                        decimal price = decimal.Parse(table[i, j]) * groupPeople;
                        if (table[i, 0] == table[1, 0] && groupPeople >= 30)
                        {
                            Console.WriteLine($"Total price: {(price * (decimal)0.85):f2}");
                        }
                        else if (table[i, 0] == table[2, 0] && groupPeople >= 100)
                        {
                            decimal discount = decimal.Parse(table[i, j]) * (groupPeople - 10);
                            Console.WriteLine($"Total price: {discount:f2}");
                        }
                        else if (table[i, 0] == table[3, 0] && (groupPeople >= 10 && groupPeople <= 20))
                        {
                            Console.WriteLine($"Total price: {(price * (decimal)0.85):f2}");
                        }
                        else
                            Console.WriteLine($"Total price: {price:f2}");
                    }
                }
            }
        }
    }
}

 

0
nickwork avatar nickwork 657 Точки
Грешката ти е на ред 37 => вместо по 0.85 трябва да умножаваш по 0.95 => така дава 100/100 (интересно решение с матрици си направил..well done :) ) else if (table[i, 0] == table[3, 0] && (groupPeople >= 10 && groupPeople
1
kkaraivanov avatar kkaraivanov 486 Точки

Много благодаря колега. Явно при копиране на изхода с парсването съм забравил да редактирам стойността. Ами след като вляза в първия if си ползвам масив :) Благодаря

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