Loading...
Yordan.Vachev avatar Yordan.Vachev 2 Точки

SkiTrip

#include <iostream>

using namespace std;

int main()
{
    int days;
    string room;
    string rating;
    double totalCost = 0;

    switch (room)
    {
        case "room for one person":
            if (rating == "positive")
            {
                totalCost = (days - 1) * 18*1.25;
            }
            else if (rating == "negative")
            {
                totalCost = (days - 1) * 18*1.10;
            }
            break;
        case "apartment":
            if (days < 10)
            {
                totalCost= ((days - 1)  25)-((days - 1)  25 * 0.30);
            }
            else if (days >= 10 && days<15)
            {
                totalCost = ((days - 1)  25) - ((days - 1)  25 * 0.35);
            }
            else if (days >= 15)
            {
                totalCost = ((days - 1)  25) - ((days - 1)  25 * 0.50);
            }
            if (rating == "positive")
            {
                totalCost = totalCost + (totalCost * 0.25);
            }
            else if (rating == "negative")
            {
                totalCost = totalCost - (totalCost * 0.10);
            }
            break;
        case "president apartment":
            if (days < 10)
            {
                totalCost = ((days - 1)  35) - ((days - 1)  35 * 0.10);
            }
            else if (days >= 10 && days < 15)
            {
                totalCost = ((days - 1)  35) - ((days - 1)  35 * 0.15);
            }
            else if (days >= 15)
            {
                totalCost = ((days - 1)  35) - ((days - 1)  35 * 0.20);
            }
            if (rating == "positive")
            {
                totalCost = totalCost + (totalCost * 0.25);
            }
            else if (rating == "negative")
            {
                totalCost = totalCost - (totalCost * 0.10);
            }
            break;
    }
    cout << totalCost;

    return 0;
}


Атанас решава да прекара отпуската си в Банско и да кара ски. Преди да отиде обаче, трябва да резервира
хотел и да изчисли колко ще му струва престоя. Съществуват следните видове помещения, със следните
цени за престой:
 &quot;room for one person&quot; – 18.00 лв. за нощувка
 &quot;apartment&quot; – 25.00 лв. за нощувка
 &quot;president apartment&quot; – 35.00 лв. за нощувка
Според броят на дните, в които ще остане в хотела (пример: 11 дни = 10 нощувки) и видът на помещението,
което ще избере, той може да ползва различно намаление. Намаленията са както следва:
вид помещение по-малко от 10 дни между 10 и 15 дни повече от 15 дни
room for one person не ползва намаление не ползва намаление не ползва намаление
apartment 30% от крайната цена 35% от крайната цена 50% от крайната цена
president apartment 10% от крайната цена 15% от крайната цена 20% от крайната цена
След престоя, оценката на Атанас за услугите на хотела може да е позитивна (positive) или негативна
(negative) . Ако оценката му е позитивна, към цената с вече приспаднатото намаление Атанас добавя 25% от
нея. Ако оценката му е негативна приспада от цената 10%.
Вход
Входът се чете от конзолата и се състои от три реда:
 Първи ред - дни за престой - цяло число в интервала [0...365]
 Втори ред - вид помещение - &quot;room for one person&quot;, &quot;apartment&quot; или &quot;president apartment&quot;
 Трети ред - оценка - &quot;positive&quot; или &quot;negative&quot;
Изход
На конзолата трябва да се отпечата един ред:
 Цената за престоят му в хотела, форматирана до втория знак след десетичната запетая.
Примерен вход и изход
Вход Изход Обяснения
14
apartment
positive

264.06 14 дни =&gt; 13 нощувки =&gt; 13 * 25.00 = 325 лв.
10 &lt; 13 дни &lt; 15 =&gt; 325 – 35%= 211.25 лв.
Оценката е positive =&gt; 211.25 + 25% = 264.0625 -&gt; 264.06 лв.
Вход

Ще ми трябва малко помощ!

 

Тагове:
0
Programming Basics with C++ 28/06/2019 11:10:14
dmartinov avatar dmartinov 37 Точки

Честно казано самата математика не я проследих, но като започенм от там, че никъде не видях къде четеш входа от конзолата (а без това няма как да работи коректно програмата) и като завършим с това, че нямаш форматиране на изхода спрямо изискванията....judge ще се сърди много :) Освен това има една уловка която я обясниха на лекцията, а именно, че няма как със cin да прочетеш "room for one person". Трябва да го направиш с getline, което пък води след себе си друга особеност. Опитай се да го направиш и ако не, може да се опиташ да проследиш логиката в моя вариант. Но моя съвет е да изгледаш видеото от лекцията, защото там Марто показа как се решава и обясни тези особености, които ти споменах за cin и getline.

#include <iostream>
#include <string>

using namespace std;

int main() {

    string daysAsText, roomType, grade;

    getline(cin, daysAsText);
    getline(cin, roomType);
    getline(cin, grade);

    int days = stoi(daysAsText);
    int nights = days - 1;

    double price = 0;

    if (roomType == "apartment" && nights < 10) {
        price = (25 * nights) * 0.70;
    } else if (roomType == "apartment" && nights >= 10 && nights <= 15) {
        price = (25 * nights) * 0.65;
    } else if (roomType == "apartment" && nights > 15) {
        price = (25 * nights) * 0.50;
    } else if (roomType == "president apartment" && nights < 10) {
        price = (35 * nights) * 0.90;
    } else if (roomType == "president apartment" && nights >= 10 && nights <= 15) {
        price = (35 * nights) * 0.85;
    } else if (roomType == "president apartment" && nights > 15) {
        price = (35 * nights) * 0.80;
    } else if (roomType == "room for one person") {
        price = 18 * nights;
    }

    double finalPrice = 0;

    if (grade == "positive") {
        finalPrice = price + (price * 0.25);
    } else if (grade == "negative") {
        finalPrice = price * 0.90;
    }

    cout.setf(ios::fixed);
    cout.precision(2);
    cout << finalPrice << endl;

    return 0;
}

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