Loading...
PoliDobreva avatar PoliDobreva 1 Точки

Hotel Room Problem Exam August 2016 c#

Здравейте> трябва ми малко помощ за тази задача https://judge.softuni.bg/Contests/Practice/Index/274#2

Не мога да я докарам до 100/100 и не се намирам грешката...

благодаря предварително :)

Тагове:
0
Programming Basics
TeodorStefanovPld avatar TeodorStefanovPld 1274 Точки

ако дадеш код,може да ти помогнем или ти искаш готово решение ?

0
PoliDobreva avatar PoliDobreva 1 Точки

Ето го :https://pastebin.com/v9GG1htd

Може и само насоки...

0
TeodorStefanovPld avatar TeodorStefanovPld 1274 Точки

 if (nights >= 7 && nights <= 13 && month == "May" || month == "October") това тук е май 

 if (nights >7 && nights <= 14 && month == "May" || month == "October")без равното защото са казали при повече от 7 нощувки  или до 14 нощувки.другата част от кода изглежда ок.Ти както беше написала тази проверка при 7 нощувки влизаш в този иф защото nights>=7 при зададени 7 нощувки това е вярно. А при 14 нощувки изпускаше 1 проверка защото при nights<=13 ако ти дадат точно 14? какво правиш другите ти проверки са при nights>14 .. това е дребна грешка в логиката.

0
20/03/2018 15:28:22
PoliDobreva avatar PoliDobreva 1 Точки

И двете коригирах от 80/100 съм на 90/100...

0
TeodorStefanovPld avatar TeodorStefanovPld 1274 Точки

сложи decimal,по принцип като е с пари се работи с decimal може да проверяват и точното закръгляне в някои от тестовете.смисъл щом си 90/100 това вече е някакъв съвсем дребен детайл и трудно се забелязва някои edge case. В момента се сещам само за decimal.Заради закръглянето което е малко по-различно.

0
clipro avatar clipro 73 Точки

В задачата няма закръгляне, а само форматиране. Не би следвало от това да е проблема в оценката.

Вярно е, че при работа с пари се препоръчва decimal вместо double, но в случая не съм сигурен, че това е причината. В моето решение също използвам decimal, въпреки че кодът ми изглежда по-ръбав с тия М-ки навсяъде след цифрите

https://pastebin.com/5TbKheDh

В кода на PoliDobreva има няколко, неща които могат да се изчистят:

  • string month = Console.ReadLine(); бих добавил ToLower
  • double nights - нощувките са цяло число (ако е после заради смятането на цената - няма смисъл, така или иначе резултатът би бил double)
  • всички ценови променливи аз бих използвал в decimal
  • switch конструкцията значително може да се опрости - цената е еднаква два по два месеца, освен това може да се дефинира и отстъпката според месеците
  • ако се дефинират отстъпките в първия switch това много ще опрости втората проверка (за броя нощувки)

Може би ако се изчисти всичко това резултатът би бил 100/100?

0
SvetoslavGeorgiev86 avatar SvetoslavGeorgiev86 17 Точки

Здравей,

много късно отговарям но реших да пиша тъй като и аз бах я решил точно както тебе с разликата че нямах "=" на 7 и  по-голямо и равно на 14 и я докарах до 90/100 и на никъде,

и гледам че като поставя 7 нощувки и Октомври ми влиза да решава при > 7 се шашнах и си викам що па решава при 7 като съм му задал >7 и пробвах с 8 и пак същото, така стигнах до решението:

това е твоето:

if (nights >= 7 && nights <= 13 && month == "May" || month == "October")

else if (nights > 14 && month == "May" || month == "October")

else if (nights > 14 && month == "June" || month == "September")

а ето и моето с 100/100 на judge:

if (nights > 7 && nights <= 14 && month == "May" || 
                nights > 7 && nights <= 14 && month == "October")

else if (nights > 14 && month == "May" || nights > 14 && month == "October")

else if (nights > 14 && month == "June" || nights > 14 && month == "September")

т.е. след всяко "||" (или) ти иска да въведеш отново от колко до колко нощувки за следващия месец!

Дано съм бил изчерпателен и да съм помогнал на теб и на другите които ще направят подобна грешка!

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