Софтуерно Инженерство
Loading...
dmartinov avatar dmartinov 25 Точки

Задача New House от Programing Basics with C++

Разписах задачата по всевъзможни начини, но не успявам да взема повече от 50 точки, а всички примерни входове и изходи минават. Преглеждам я вече за n-ти път и мисля, че се нуждая от едно рамо. Във всички варианти в които я разписах, все едни и същи резултати получвам, което ме навежда на мисълта, че може би някъде в изчисленията нещо бъркам. Може би е нещо съвсем елементарно, но вече тотално зациклих. Условието е следното:

Нели толкова много обича цветята, че Ви убеждава да напишете програма която да изчисли колко  ще им струва, да си засадят определен брой цветя и дали наличния бюджет ще им е достатъчен. Различните цветя са с различни цени.

цвете

Роза

Далия

Лале

Нарцис

Гладиола

Цена на брой в лева

5

3.80

2.80

3

2.50

Съществуват следните отстъпки:

  • Ако Нели купи повече от 80 Рози - 10% отстъпка от крайната цена
  • Ако Нели купи повече от 90  Далии - 15% отстъпка от крайната цена
  • Ако Нели купи повече от 80 Лалета - 15% отстъпка от крайната цена
  • Ако Нели купи по-малко от 120 Нарциса - цената се оскъпява с 15%
  • Ако Нели Купи по-малко от 80 Гладиоли - цената се оскъпява с 20%

 

От конзолата се четат 3 реда:

  • Вид цветя - текст с възможности - "Roses", "Dahlias", "Tulips", "Narcissus", "Gladiolus"
  • Брой цветя - цяло число в интервала [10…1000]
  • Бюджет - цяло число в интервала [50…2500]

Да се отпечата на конзолата на един ред:

  • Ако бюджета им е достатъчен - "Hey, you have a great garden with {броя цвета} {вид цветя} and {останалата сума} leva left."
  • Ако бюджета им е НЕ достатъчен - "Not enough money, you need {нужната сума} leva more."

Сумата да бъде форматирана до втория знак след десетичната запетая.

 

#include <iostream>
#include <string>

using namespace std;

int main() {

    string flowers;
    int countFlowers, budget;

    cin >> flowers >> countFlowers >> budget;

    double priceFlowers = 0;

    if (flowers == "Roses") {
        priceFlowers = countFlowers * 5;
    } else if (flowers == "Dahlias") {
        priceFlowers = countFlowers * 3.80;
    } else if (flowers == "Tulips") {
        priceFlowers = countFlowers * 2.80;
    } else if (flowers == "Narcissus") {
        priceFlowers = countFlowers * 3;
    } else if (flowers == "Narcissus") {
        priceFlowers = countFlowers * 3;
    } else if (flowers == "Gladiolus") {
        priceFlowers = countFlowers * 2.50;
    }

    double price = priceFlowers;

    if (flowers == "Roses" && countFlowers > 80) {
            price = priceFlowers * 0.90;
        } else if (flowers == "Dahlias" && countFlowers > 90) {
            price = priceFlowers * 0.85;
        } else if (flowers == "Tulips" && countFlowers > 80) {
            price = priceFlowers * 0.85;
        } else if (flowers == "Narcissus" && countFlowers < 120) {
            price = priceFlowers * 1.15;
        } else if (flowers == "Gladiolus" && countFlowers < 80) {
            price = priceFlowers * 1.20;
        }

    cout.setf(ios::fixed);
    cout.precision(2);

    if (price < budget) {
        double enoughMoney = budget - price;
        cout << "Hey, you have a great garden with " << countFlowers << " " << flowers << " and " << enoughMoney << " leva left." << endl;
    } else {
        double notEnoughMoney = price - budget;
        cout << "Not enough money, you need " << notEnoughMoney << " leva more." << endl;
    }

    return 0;
}

Тагове:
0
Основи на програмирането 26/06/2019 10:35:54
RuNNeR4142 avatar RuNNeR4142 391 Точки
Best Answer

if (price <= budget) {   ако парите са точно колкото трябват значи са достатъчни

0
dmartinov avatar dmartinov 25 Точки

Оле, оле, оле....винаги съм го казвал - една грешна запетая = 3 безсънни нощи :D

Благодаря ти! :)

2