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
RuNNeR4142 avatar RuNNeR4142 396 Точки
public class E08CleverLily {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int age = Integer.parseInt(scanner.nextLine());
        double priceWM = Double.parseDouble(scanner.nextLine());
        int toyPrice = Integer.parseInt(scanner.nextLine());
        int toys = 0;
        int money = 0;
        int moneyTotal = 0;


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

            if (i % 2 == 0) {
                moneyTotal += money - 1;

            } else {
                toys++;
            }
        }

        moneyTotal += toys * toyPrice;

        if (moneyTotal >= priceWM) {
            System.out.printf("Yes! %.2f", (moneyTotal - priceWM));

        } else {
            System.out.printf("No! %.2f", (priceWM - moneyTotal));
        }
    }
}
0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.