Loading...
yGaByGa avatar yGaByGa 21 Точки

C# 28.08.2016 изпит , Хотелска стая ?

Здравейте , някой може ли да ми покаже грешката защо ми дава 80/100 точки ?

На изпита загубих 1 ч от времето си само да форматирам изхода и да се опитам да изкарам 100/100 точки . Ще бъда благодарен ако някой ме светне къде е грешката защото полудявам ...

Благодаря предварително


http://pastebin.com/kBgg8Pm9

Тагове:
0
Programming Basics 26/09/2016 11:07:02
Rado_tornado avatar Rado_tornado 8 Точки

Здравей,

Сменяш местата на if-овете и > не < от 7. 

 if (noshtyvki > 14.00 )
                {
                    cenaApartament = (noshtyvki * 65);
                    newCenaApartament = cenaApartament - (cenaApartament * 10 / 100);
                    Console.WriteLine("Apartment: {0} lv.", string.Format("{0:0.00}", newCenaApartament));
                    cenaStudio = (noshtyvki * 50);
                    newCenaStudio = cenaStudio - (cenaStudio * 30 / 100);
                    Console.WriteLine("Studio: {0} lv.", string.Format("{0:0.00}", newCenaStudio));
                }

else if (noshtyvki > 7 )
                {
                    cenaApartament = (noshtyvki * 65);
                    Console.WriteLine("Apartment: {0} lv.", string.Format("{0:0.00}", cenaApartament));
                    cenaStudio = (noshtyvki * 50);
                    newCenaStudio = cenaStudio - (cenaStudio * 5 / 100);
                    Console.WriteLine("Studio: {0} lv." , string.Format("{0:0.00}", newCenaStudio));
                }

else
                {
                    cenaApartament = (noshtyvki * 65);
                    Console.WriteLine("Apartment: {0} lv.", string.Format("{0:0.00}", cenaApartament));
                    cenaStudio = (noshtyvki * 50);
                    Console.WriteLine("Studio: {0} lv.", string.Format("{0:0.00}", cenaStudio));
                }

 

и дава 100 :)

0
28/08/2016 20:07:25
yGaByGa avatar yGaByGa 21 Точки

Благодаря много за информацията :) Че вече тая задача ми скъса нервите . На изпита загубих една камара време за да я форматирам и в опити да изкарам 100/100 и накрая не успях . Вкъщи пак пробрах и не става и не става . 

Благодаря за инфото и поправката !

0
yGaByGa avatar yGaByGa 21 Точки

И ако може някой да ми сподели своето решение на 6-тата задача Цифрите ?

Ще бъда благодарен че аз нещо си губя логиката в процеса на решение и нищо не се получава .

Благодаря .

0
jivako000 avatar jivako000 296 Точки

АХХХ!! Тази задача ми отне 2 часа на изпита днес! Повече от 70т не можах да изкарам. Лекторите идваха при мен, детайлно ми прегледа решението и всичко си работеше, ама Judge не мислеше така! И заради тази задача, не ми достигнаха 30т за да се класирам! sadangry

0
kristian1503 avatar kristian1503 1 Точки

Ето го моето решение. По кратко е и по-лесно се ориентираш в кода. На изпита много се измъчих с тази задача angryhttp://pastebin.com/XXx1FZSZ

0
PepsiTy avatar PepsiTy 1 Точки

 var mesec = Console.ReadLine(); 

тук е трябвало след това да сложиш ToString(). за да форматираш изписването на месеца, след това опрявяш и изписването на месеците надолу да са с малки букви и  би трябвало да ти даде вс точки 

0
29/08/2016 08:52:24
DDaskalov avatar DDaskalov 10 Точки

Моето решение е подобно на това на kristian1503 , само дето за проверката за месец съм използвал switch...

using System;

namespace HotelRoom
{
    class MainClass
    {
        public static void Main (string[] args)
        {
            string month = Console.ReadLine ();
            int nights = int.Parse (Console.ReadLine ());
            decimal priceStudio = 0m;
            decimal priceApartment = 0m;
            switch (month)
            {
            case "May":
            case "October":
                {
                    if (nights > 14)
                    {
                        priceStudio = (decimal)nights * (50m * 0.7m);
                        priceApartment= (decimal)nights * (65m*0.9m);
                    }
                    else if (nights > 7)
                    {
                        priceStudio = (decimal)nights * (50m * 0.95m);
                        priceApartment= (decimal)nights * 65m;

                    }
                    else
                    {
                        priceStudio = (decimal)nights * 50m;
                        priceApartment= (decimal)nights * 65m;
                    }

                }
                break;
            case "June":
            case "September":
                {
                    if (nights > 14)
                    {
                        priceStudio = (decimal)nights * (75.20m * 0.8m);
                        priceApartment= (decimal)nights * (68.70m*0.9m);
                    }
                    else
                    {
                        priceStudio = (decimal)nights * 75.20m;
                        priceApartment= (decimal)nights * 68.70m;
                    }
                }
                break;
            case "July":
            case "August":
                {
                    if (nights > 14)
                    {
                        priceStudio = (decimal)nights * 76m;
                        priceApartment= (decimal)nights * (77m*0.9m);
                    }
                    else
                    {
                        priceStudio = (decimal)nights * 76m;
                        priceApartment= (decimal)nights * 77m;
                    }
                }
                break;
            default:
                break;
            }
            Console.WriteLine ("Apartment: {0:f2} lv.", priceApartment);
            Console.WriteLine ("Studio: {0:f2} lv.", priceStudio);
        }
    }
}

 

0
29/08/2016 09:30:37
davichonov365 avatar davichonov365 127 Точки

Пробвали с {0:f2}

0
jivako000 avatar jivako000 296 Точки

Така ги закръглих всичките.

0
davichonov365 avatar davichonov365 127 Точки

if (noshtyvki < 7)
                    {
                        cenaApartament = (noshtyvki * 65);
                        Console.WriteLine("Apartment: {0} lv.", string.Format("{0:0.00}", cenaApartament));
                        cenaStudio = (noshtyvki * 50);
                        newCenaStudio = cenaStudio - (cenaStudio * 5 / 100);
                        Console.WriteLine("Studio: {0} lv.", string.Format("{0:0.00}", newCenaStudio));

 

Мисля че е тука ,. защото няма намаление ако е под седем дни почивката 

0
KonstantinLupov avatar KonstantinLupov 34 Точки

https://github.com/KonstantinLupov/Exam/blob/master/Hotel%20Room

Това е моето решение от изпита днес.
Използвай Debugger! Много е полезен.

0
28/08/2016 23:44:46
puffed avatar puffed 289 Точки

Както е писал един от колегите, трябва само да смениш условието if (noshtyvki < 7 )  => if (noshtyvki > 7 ). Нямаш проблем с форматирането, така е ок. Аз лично винаги в тези случаи ползвам {0:f2}, мисля, че правят едно и също закръгляне с точност до 2-рата цифра. Ето тест например:

        Console.WriteLine ("3.1456 with 0:f2 -> {0:f2}", 3.1456);
        Console.WriteLine ("3.1456 with 0:0.00 -> {0:0.00}", 3.1456);
        Console.WriteLine ("3.1456 with Math.Round(num, 2) -> {0}", Math.Round(3.1456, 2));

        //        3.1456 with 0:f2 -> 3.15
        //        3.1456 with 0:0.00 -> 3.15
        //        3.1456 with Math.Round(num, 2) -> 3.15

Но аз искам да те посъветвам още няколко неща. Например именувай променливите с английски имена, доколкото е възможно. Твоите всъщност са със смесени имена. Също избягвай повтарящите се изчисления и печатания. Например ти имаш променливи като newCenaStudio, за които е достатъчно да намериш стойността им чрез условна конструкция и чак накрая на програмата да ги печаташ. Няма нужда във всеки клон на if-a, така става ненужно дълго и се чете трудно. Също използвай нещо като pastebin за по-дълги кодове, според правилата на форума над 15 реда трябва да се изнасят в pastebin и подобни.

Ето едно решение на 3-та задача за хотелската стая и от мен http://pastebin.com/sCcpAzWh. Използвам switch case условна конструкция, може да е не е била включена в курса, но ми е много удобна за тези случаи. В условните конструкции определям основните променливи какви стойности трябва да имат, например цената на студото за една нощувка и дали има някаква отстъпка. После всички изчисления и печатания са изнесени извън условните конструкции. Пробвай така и ще намалиш значително кода и така ще се чете по-лесно, ще се дебъгва значително по-лесно.

Ето и на 6а задача:  http://pastebin.com/u4M2kQ6K

Поздрави!

0
kaloyannikov avatar kaloyannikov 531 Точки

С тернарни оператори почти навсякъде ,малко по-трудно четимо е , но е 10 реда : http://pastebin.com/TNkjGuvv

0
29/08/2016 01:43:58
yGaByGa avatar yGaByGa 21 Точки

Благодаря на вскички споделили решиния и знания :)

0
Tanina80 avatar Tanina80 11 Точки

Моето решение: http://pastebin.com/2jNJFNg0

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

 

0
29/08/2016 08:12:28
morski77 avatar morski77 137 Точки

Относно въпроса за задачата за цените на  хотелска  стая,единствената грешка,която и аз допуснах ти е в първия if за май и октомври.Трябва да е <= 7,а не <,защото в условието пише повече от 7 дни.

Както и не трябва да е > 7,защото веднага влизаш в условието на всички останали случаи над седем,в if-конструкцията в твоя случай.За switch в другите примери си има break и почва в случаите от повече дни към към по-малък престой.

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

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