Задача 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;
}
Оле, оле, оле....винаги съм го казвал - една грешна запетая = 3 безсънни нощи :D
Благодаря ти! :)