Programming Basics Exam - 28 August 2016 - HOTEL ROOM
Половината тестове не минават. Има проблеми при If за June && September. Там някъде ми прави грешни сметки, но не разбирам защо.
Благодаря предварително.
Половината тестове не минават. Има проблеми при If за June && September. Там някъде ми прави грешни сметки, но не разбирам защо.
Благодаря предварително.
1. може month и days направо горе да се дефинират;
month = Console.ReadLine();
days = Convert.ToInt32(Console.ReadLine());
2. смени placeholder-a с {0:f2}, който закръгля до втория знак след десетичната запетая;
3. махни wholePa.ToString() и wholePs.ToString() и ги замени с "Apartment: {0:f2} lv." и "Studio: {0:f2} lv.";
4. дните през Юни, Юли, Август и Септември трябва да са повече от (>14), а не да са 14 или повече(>=14!!!!);
5. махни последния "Console.ReadLine()", той не ти върши никаква работа;
6. не оставяй толкова място между редовете, че е по-трудно кода да се проследи;
7. използвай pastebin.
Успех в обучението! :)
Не виждам къде прилагаш отстъпката за брой нощувки.
Виш как съм го направил аз, примерно за май/октомври:
if (numberOfNights > 14)
{
priceApart = numberOfNights * 65.0 * 0.9;
priceStudio = numberOfNights * 50.0 * 0.7;
}
else if (numberOfNights > 7)
{
priceStudio = numberOfNights * 50.0 * 0.95;
priceApart = numberOfNights * 65.0;
}
else
{
priceApart = numberOfNights * 65.0;
priceStudio = numberOfNights * 50.0;
}
А цялото решение е тук : http://pastebin.com/4XZsBX76
priceA = priceA - (priceA * 10 / 100);
Просто правя формула, вместо да пресмятам на ум.
Прочети правилата на фирума и ползвай pastebin за код по-дълъг от 15 реда.
1. Премахни това "Console.ReadLine();" в края на програмата си и я стартирай със Ctrl+F5. Така няма да ти се затваря прозореца след изпълнение.
2. Поправи си диапазоните, така, че да станат :
if (days > 7 && days <= 14)
if (days > 14)
Другата грешка е, че при въвеждане на 0 дни, резултатът е:
Apartment: .00 lv.
Studio: .00 lv.
т.е. не се изпечатва нулата за левовете.
Благодаря! :)
Използвай условна конструкция switch-case:
using System;
namespace HotelRoom
{
class Program
{
static void Main(string[] args)
{
string month = Console.ReadLine();
var overnights = int.Parse(Console.ReadLine());
double studio = 0, apartament = 0;
switch (month)
{
case "May":
case "October":
studio = 50 * overnights;
apartament = 65 * overnights;
if (overnights > 7 && overnights <= 14) studio -= studio * 0.05;
else if (overnights > 14) studio -= studio * 0.30;
break;
case "June":
case "September":
studio = 75.20 * overnights;
apartament = 68.70 * overnights;
if (overnights > 14) studio -= studio * 0.20;
break;
case "July":
case "August":
studio = 76 * overnights;
apartament = 77 * overnights;
break;
default:
break;
}
if (overnights > 14) apartament -= apartament * 0.10;
Console.WriteLine("Apartment: {0:F2} lv.", apartament);
Console.WriteLine("Studio: {0:F2} lv.", studio);
}
}
}
А защо е необходимо да конвертира days при положение, че си е зададена като int и може да я парсне директно?
int days = int.Parse(Console.ReadLine());
Добър въпрос! И аз не мога да си обясня като е зададено по условие. Не знам кво ми е хрумнало тогава. :D
Във връзка със старите задачи от изпити и аз искам да добавя нещо важно.
Аз съм от група JAVA на Programming basics, септември'16
Реших някои от първите задачи от стари изпити, но при проверка в judge, ми дава множество грешки, дължащи се на проблем със закръглянето, и то на 0,0000000???-ниво. предполагам, защото са писани на C#.
Много моля, този проблем да се оправи! Защото на изпита ще пропищят много хора с верни задачи, а системата им е показала, че са грешни.
...Става въпрос за тази задача: http://pastebin.com/ei8Ti0KD
1
5
5
569.6687179487179 , а това е вярното: 569.668717948718