Софтуерно Инженерство
Loading...
Yordan.Vachev avatar Yordan.Vachev 2 Точки

clever Lily - for цикъл

Лили вече е на N години. За всеки свой рожден ден тя получава подарък. За нечетните рождени дни (1, 3,
5...n) получава играчки, а за всеки четен (2, 4, 6...n) получава пари. За втория рожден ден получава 10.00 лв,
като сумата се увеличава с 10.00 лв, за всеки следващ четен рожден ден (2 -> 10, 4 -> 20, 6 -> 30...и т.н.). През
годините Лили тайно е спестявала парите. Братът на Лили, в годините, които тя получава пари, взима по 1.00
лев от тях. Лили продала играчките получени през годините, всяка за P лева и добавила сумата към
спестените пари. С парите искала да си купи пералня за X лева. Напишете програма, която да пресмята,
колко пари е събрала и дали ѝ стигат да си купи пералня.
Вход
Програмата прочита 3 числа, въведени от потребителя, на отделни редове:
 Възрастта на Лили - цяло число в интервала [1...77]
 Цената на пералнята - число в интервала [1.00...10 000.00]
 Единична цена на играчка - цяло число в интервала [0...40]
Изход
Да се отпечата на конзолата един ред:
 Ако парите на Лили са достатъчни:
o “Yes! {N}” - където N е остатъка пари след покупката
 Ако парите не са достатъчни:
o “No! {М}“ - където M е сумата, която не достига
 Числата N и M трябва да за форматирани до вторият знак след десетичната запетая.
Примерен вход и изход
вход изход Коментари
10
170.00
6

Yes! 5.00 Първи рожден ден получава играчка; 2ри -> 10лв; 3ти -> играчка;
4ти -> 10 + 10 = 20лв; 5ти -> играчка; 6ти -> 20 + 10 = 30лв; 7ми -> играчка;
8ми -> 30 + 10 = 40лв; 9ти -> играчка; 10ти -> 40 + 10 = 50лв.
Спестила е -> 10 + 20 + 30 + 40 + 50 = 150лв. Продала е 5 играчки по 6 лв = 30лв.
Брат ѝ взел 5 пъти по 1 лев = 5лв. Остават -> 150 + 30 – 5 = 175лв.
175 >= 170 (цената на пералнята) успяла е да я купи и са и останали 175-170 = 5 лв.

21
1570.98
3

No! 997.98 Спестила е 550лв. Продала е 11 играчки по 3 лв = 33лв. Брат ѝ взимал 10 години

по 1 лев = 10лв. Останали 550 + 33 – 10 = 573лв
573 < 1570.98 – не е успяла да купи пералня. Не ѝ достигат 1570.98–573 = 997.98лв

#include <iostream>
#include <string>
#include <cmath>

using namespace std;

int main() {

    int age;
    cin >> age;

    double washingMashinePrice;
    cin >> washingMashinePrice;

    int toyPrice;
    cin >> toyPrice;

    int moneyYears = 0;
    int toyYears = 0;

    for(int i = 1; i <= age; i++){
        if(i % 2 == 0){
            moneyYears++;
        }else{
            toyYears++;
        }
    }

    double money;
    for(int i = 1; i <= moneyYears; i++){
        money = money + (10 * 1);
        money = (money + ((toyYears * toyPrice) - moneyYears));
    }

    double diff = abs(washingMashinePrice - money);
    cout.setf(ios::fixed);
    cout.precision(2);
    if(money >= washingMashinePrice){
        cout << "Yes!" << diff;
    }else{
        cout << "No!" << diff;
    }

    return 0;
}

 

Някъде бъркам нещо при изчисленията!

 

 

Тагове:
0
Programming Basics with C++
spasimira25 avatar spasimira25 25 Точки

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

Например при 5+5. втория ти цикъл мисля, че ще се изпълни правилно, но при 5+6 какво ще стане?

Решение 1 . Опитай да вкараш част от сметките от втория цикъл в първия.
Решение 2. Опитай да  направиш сметките без цикъл за нечетните години. И с един простичък цикъл за четните, в които е получавала пари. (не виждам много смисъл от излишно утежняване и усложняване)

Ако не успееш да се справиш ето ти моето решение 100/100

for(int i = 1; i <= age; i++){

if (i%2==0)  { pari=pari+10; saved=saved+pari, takkenmoney++;} //1.Парите които получава се увеличават с +10 на всеки втори цикъл( втора година ; реално това може да се изнесе и във втори цикъл, като при теб, но не виждам смисъл. ) 2. след което парите се добавят в спестени. 3. Един каунтър за годините, които брат и е гепил парите.

if (i%2==1)  { toys++;}// играчките предполагам са ясни
}

sum=saved-takkenmoney+p*toys;// това е формулата за общата сума "p" e цената на играчките в случая
Оттук мисля, че можеш да си направиш послендите сметки и сам.

 

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

Благодаря за насоките помогнаха ми

#include <iostream>
#include <cmath>

using namespace std;

int main() {

    int age;
    cin >> age;

    double washingMashinePrice;
    cin >> washingMashinePrice;

    int toyPrice;
    cin >> toyPrice;

    int moneyYears = 0;
    int toyYears = 0;
    int money = 0;
    int saveMoney = 0;

    for(int i = 1; i <= age; i++){
        if(i % 2 == 0){
            moneyYears++;
            money = moneyYears * 10;
            saveMoney = saveMoney + money;
        }else{
            toyYears++;
        }
    }
    money =  saveMoney - moneyYears + (toyYears * toyPrice);

    double diff = abs(washingMashinePrice - money);
    cout.setf(ios::fixed);
    cout.precision(2);
    if(money >= washingMashinePrice){
        cout << "Yes! " << diff;
    }else{
        cout << "No! " << diff;
    }

    return 0;
}

 

0