Професионална програма
Loading...
+ Нов въпрос
Maksim01 avatar Maksim01 1 Точки

Задача 3 "Restaurant Discount"

Така, задачата е лесна (или поне се очаква да е) и все пак Джъдж не е доволен от мен (малко над 80 точки и гърми след нулевите тестове). Ето ви кода (можех да препиша някой работещ, но държа да оправя този, защото нищо не печеля, ако просто замета грешката под килима): https://pastebin.com/wfhEeLjV Не държа да ми кажете точно кое и как да променя буква по буква, просто да ми подскажете какъв вид грешка да търся. Вероятно бих могъл да го налучкам и сам някога в далечното бъдеще (теория на вероятностите), но предпочитам да не се задържам цяла седмица на тази задача като знам колко общо задачи имам да реша, затова ще оценя всяка помощ. Друго си е да имах само този или дори по-дълъг код, за да му се посветя напълно в следващите дни, но времето ме притиска. Някой ще помогне ли на този кандидат за програмист, за да може да продължи напред? :(

Тагове:
0
Fundamentals Module
TeodorStefanovPld avatar TeodorStefanovPld 1282 Точки

Ако беше добавил и условието още по-добре.Няколко неща значи всеки if ти същестува отделно така че ако в началото си обявил price=0 няма нужда да правиш price+= нещо си. price= нещо си e  напълно вярно и работи. Компилатора е умен и взима новата стойност на price тои минава по всеки ред последователно така или иначе.С# е типизиран език не скриптов.

Мда определено това += price и в 2та ти if нещо не ми харесва как е,нещо там се случва.Но без условието немога да проследя по-точно логиката.

      

 

0
TeodorStefanovPld avatar TeodorStefanovPld 1282 Точки

честно някакъв много малък детайл е,не мога да го видя,без да рънна кода. https://pastebin.com/19LAwnhw .Ето моя които дава 100/100 както ще видиш логиката ни е еднаква.Аз просто имам манията да си следя кое къде отива и затова не ползвах -= а си създадох отделни променливи и накрая всичко.По принцип би трябвало мат оператори да се изпълняват по  старшинство така че не виждам проблема и при правенето на discount. може би да опиташ да правиш price-=(0.05 *price) така да го запишеш.Може би довечера като рънна кода ще видя нещо повече но в момента така на сухо само толкова.

0
denis.argatski avatar denis.argatski 24 Точки

https://pastebin.com/193aVG3b - мойто решение.

0
stoian1929 avatar stoian1929 2 Точки

Според мене проверките за Clients са грешни:

Ако имаш примерно 60 клиента 

  1.            else if (Clients <= 100) => Клиентите влизат тук на първата проверка Clients = 60;

  2.             {

  3.                 Price += 5000;

  4.                 hallName = "Terrace";

  5.             }

  6.             else if (Clients <= 120) => Clients = 60; А после влизат и тук и се презаписват стоиностите

0
25/01/2018 21:19:04
Ekaterin avatar Ekaterin 133 Точки

using System;

namespace RestaurantDiscount
{
    class Program
    {
        static void Main(string[] args)
        {
            double numberOfPeople = double.Parse(Console.ReadLine());
            string servicePackage = Console.ReadLine().ToLower();
            double price = 0;
            if (numberOfPeople > 120)
            {
                Console.WriteLine("We do not have an appropriate hall.");
            }
            if (numberOfPeople <= 50)
            {
                if (servicePackage == "normal")
                {
                    Console.WriteLine("We can offer you the Small Hall");
                    price = ((2500 + 500) * 0.95) / numberOfPeople;
                    Console.WriteLine($"The price per person is {price:f2}$");
                }
                else if (servicePackage == "gold")
                {
                    Console.WriteLine("We can offer you the Small Hall");
                    price = ((2500 + 750) * 0.90) / numberOfPeople;
                    Console.WriteLine($"The price per person is {price:f2}$");
                }
                else if (servicePackage == "platinum")
                {
                    Console.WriteLine("We can offer you the Small Hall");
                    price = ((2500 + 1000) * 0.85) / numberOfPeople;
                    Console.WriteLine($"The price per person is {price:f2}$");
                }
            }
            else if (numberOfPeople >= 50 && numberOfPeople < 100)
            {
                if (servicePackage == "normal")
                {
                    Console.WriteLine("We can offer you the Terrace");
                    price = ((5000 + 500) * 0.95) / numberOfPeople;
                    Console.WriteLine($"The price per person is {price:f2}$");
                }
                else if (servicePackage == "gold")
                {
                    Console.WriteLine("We can offer you the Terrace");
                    price = ((5000 + 750) * 0.90) / numberOfPeople;
                    Console.WriteLine($"The price per person is {price:f2}$");
                }
                else if (servicePackage == "platinum")
                {
                    Console.WriteLine("We can offer you the Terrace");
                    price = ((5000 + 1000) * 0.85) / numberOfPeople;
                    Console.WriteLine($"The price per person is {price:f2}$");
                }
            }
            else if (numberOfPeople >= 100 && numberOfPeople <= 120)
            {
                if (servicePackage == "normal")
                {
                    Console.WriteLine("We can offer you the Great Hall");
                    price = ((7500 + 500) * 0.95) / numberOfPeople;
                    Console.WriteLine($"The price per person is {price:f2}$");
                }
                else if (servicePackage == "gold")
                {
                    Console.WriteLine("We can offer you the Great Hall");
                    price = ((7500 + 750) * 0.90) / numberOfPeople;
                    Console.WriteLine($"The price per person is {price:f2}$");
                }
                else if (servicePackage == "platinum")
                {
                    Console.WriteLine("We can offer you the Great Hall");
                    price = ((7500 + 1000) * 0.85) / numberOfPeople;
                    Console.WriteLine($"The price per person is {price:f2}$");
                }
            }
        }
    }
}
 

Погледни моето решение надявам се да ти помогне

0
PepiBobanov avatar PepiBobanov 16 Точки

Най-добре ако може от СофтУни да разкрият детайлите от Judje , пуйчих цяла вечер и не можах да видя проблем. :(

0
Maksim01 avatar Maksim01 1 Точки

Открих си грешката и беше най-тъпото, което можеше да ми хрумне. Пропуснат интервал в Great Hall. Не знам как се заключват или трият темите, но тази вече е излишна. Благодаря на всички за помощта!

0
26/01/2018 17:33:14
kratun avatar kratun 22 Точки

Да и аз след няколко опита сигнах до този "интервал" :).

Хубаво е, когато проверяваш за по-малко от 50 човека да заложиш и повече от 0 (clients>0 && clients<=50). В условието не е зададен интервал за броя клиенти, затова е хубаво да ги предвидиш, иначе кода ти ще дава странни резултати и в тестове с 0 и отрицателни числа за клиенти. Няма заложени тестове за тях, за това не си го забелязал сигурно. Надявам се да съм бил полезен.

ПП Един допълнителен съвет. Виж наименованията на променливите.Пишеш ги с Главна(Clients) и с малка(hallName). Това, което ни казват е, че променливите винаги започват с малка буква.

0