Vacation - while цикъл
Здравейте, judge ми дава 90 точки на моето решение и не мога да намеря какво пропускам. Толкова много го гледах, че вече зациклих жестоко и се налага да потърся помощ :) Предварително благодаря!
Джеси е решила да събира пари за екскурзия и иска от вас да ѝ помогнете да разбере дали ще успее да събере необходимата сума. Тя спестява или харчи част от парите си всеки ден. Ако иска да похарчи повече от наличните си пари, то тя ще похарчи колкото има и ще ѝ останат 0 лева.
Вход
От конзолата се четат:
- Пари нужни за екскурзията - реално число в интервала [1.00.. .25000.00]
- Налични пари - реално число в интервала [0.00... 25000.00]
След това многократно се четат по два реда:
- Вид действие – текст с възможности "spend" и "save".
- Сумата, която ще спести/похарчи - реално число в интервала [0.01… 25000.00]
Изход
Програмата трябва да приключи при следните случаи:
- Ако 5 последователни дни Джеси само харчи, на конзолата да се изпише:
- "You can't save the money."
- "{Общ брой изминали дни}"
- Ако Джеси събере парите за почивката на конзолата се изписва:
"You saved the money for {общ брой изминали дни} days."
#include <iostream>
#include <string>
using namespace std;
int main() {
double vacationPrice, currentlySaved;
cin >> vacationPrice >> currentlySaved;
int daysToSpent = 0;
int days = 0;
while (currentlySaved < vacationPrice && daysToSpent < 5) {
string action;
double amount;
cin >> action >> amount;
if (action == "spend") {
if (currentlySaved <= amount) {
currentlySaved = 0;
daysToSpent++;
} else if (currentlySaved > amount) {
currentlySaved -= amount;
daysToSpent++;
}
} else if (action == "save") {
currentlySaved += amount;
daysToSpent = 0;
}
days++;
}
if (daysToSpent == 5) {
cout << "You can't save the money." << endl;
cout << days << endl;
} else if (currentlySaved >= vacationPrice) {
cout << "You saved the money for " << days << " days." << endl;
}
return 0;
}