Изпит по "Основи на програмирането" - 28 и 29 март 2020 Задача 5. Товарене на багажи
https://softuni.bg/downloads/svn/programming-basics/Resources/EXAMS-2020/Exam-Version-Two/05.%20Suitcases%20load.pdf
Имам грешка в цикъла, но не знам къде. При грешен вход(т.е. при "End") работи, но при второто условие (sumVolumes > volume) не работи
#include<iostream>
using namespace std;
int main() {
double volume, volumeSuitcase;
cin >> volume;
double sumVolumes = 0;
int counter = 0;
while (!cin.fail() || sumVolumes > volume)
{
cin >> volumeSuitcase;
counter++;
if (counter % 3 == 0)
{
volumeSuitcase *= 1.1;
}
sumVolumes += volumeSuitcase;
}
cin.clear();
if (sumVolumes > volume)
{
cout << "No more space!" << endl;
}
else
{
cout << "Congratulations! All suitcases are loaded!" << endl;
}
cout << "Statistic: " << counter << " suitcases loaded." << endl;
return 0;
}
Благодаря за предложеното решение! Въпреки че, исках да разбера по моя начин защо не работи. Но и при вашият вариант не работи коректно в случая на препълнен багажник. Иска още един допълнителен вход.
Реших задачата по моя начин като използвах част от вашата логиката, за което пак ви благодаря!:
int main()
{
double volume, volumeSuitcase;
cin >> volume;
double sumVolumes = 0;
int counter = 0;
cin >> volumeSuitcase;
while (!cin.fail())
{
if ((counter + 1) % 3 == 0)
{
volumeSuitcase *= 1.1;
}
sumVolumes += volumeSuitcase;
if (sumVolumes <= volume)
{
counter++;
}
else
{
break;
}
cin >> volumeSuitcase;
}
cin.clear();
if (sumVolumes > volume)
{
cout << "No more space!" << endl;
}
else
{
cout << "Congratulations! All suitcases are loaded!" << endl;
}
cout << "Statistic: " << counter << " suitcases loaded." << endl;
return 0;
}