Софтуерно Инженерство
Loading...
+ Нов въпрос
genichka avatar genichka 8 Точки

Toy Shop

Здравейте колеги,

Моля Ви да ми кажете как да дореша задачата,за да ми се получи и недостига.

Благодаря Ви предварително.

Това е кода ми: https://pastebin.com/ZhDghiHL

Това е условието.

Петя има магазин за детски играчки. Тя получава голяма поръчка, която трябва да изпълни. С парите, които ще спечели иска да отиде на екскурзия. Да се напише програма, която пресмята печалбата от поръчката.

Цени на играчките:

  • Пъзел - 2.60 лв.
  • Говореща кукла - 3 лв.
  • Плюшено мече - 4.10 лв.
  • Миньон - 8.20 лв.
  • Камионче - 2 лв.

Ако поръчаните играчки са 50 или повече магазинът прави отстъпка 25% от общата цена. От спечелените пари Петя трябва да даде 10% за наема на магазина. Да се пресметне дали парите ще ѝ стигнат да отиде на екскурзия.

Вход

От конзолата се четат 6 реда:

  1. Цена на екскурзията - реално число в интервала [1.00 … 10000.00]
  2. Брой пъзели - цяло число в интервала [0… 1000]
  3. Брой говорещи кукли - цяло число в интервала [0 … 1000]
  4. Брой плюшени мечета - цяло число в интервала [0 … 1000]
  5. Брой миньони - цяло число в интервала [0 … 1000]
  6. Брой камиончета - цяло число в интервала [0 … 1000]

Изход

На конзолата се отпечатва:

  • Ако парите са достатъчни се отпечатва:
    • "Yes! {оставащите пари} lv left."
  • Ако парите НЕ са достатъчни се отпечатва:
    • "Not enough money! {недостигащите пари} lv needed."

 

Резултатът трябва да се форматира до втория знак след десетичната запетая.

Примерен вход и изход

Вход

Изход

Обяснения

40.8

20

25

30

50

10

Yes! 418.20 lv left.

Сума: 20 * 2.60 + 25 * 3 + 30 * 4.10 + 50 * 8.20 + 10 * 2 = 680 лв.

Брой на играчките: 20 + 25 + 30 + 50 + 10 = 135

135 > 50 => 25% отстъпка; 25% от 680 = 170 лв. отстъпка

Крайна цена: 680 – 170 = 510 лв.

Наем: 10% от 510 лв. = 51 лв.

Печалба: 510 – 51 = 459 лв.

459 > 40.8 => 459 – 40.8 = 418.20 лв. остават

Вход

Изход

Обяснения

320

8

2

5

5

1

Not enough money! 238.73 lv needed.

Сума: 90.3 лв.

Брой на играчките: 21

21 < 50 => няма отстъпка

Наем: 10% от 90.3 = 9.03 лв.

Печалба: 90.3 – 9.03 = 81.27 лв.

81.27 < 320 => 320 – 81.27 = 238.73 лв. не достигат

Тагове:
1
Programming Basics
user184 avatar user184 14 Точки

25% отстъпка има само тогава, когато броят на играчките е по - голям или равен на 50. Доколкото виждам в този код  е възможно 2 пъти да се направи една и съща отстъпка. Това са излишните редове:

double otstapka = 0.25*suma;

double  krainacena = suma - otstapka;

 

Също така наема се пресмята след първата if проверка, а не преди нея.

0
Didocha avatar Didocha 9 Точки

Аз уча C# , но по логика, според мен трябва тези променливи:

    double  krainacena = suma - otstapka;

    double  naem = 0.10*krainacena;

    double  pechalba = krainacena - naem;

    double ostavashtipari = pechalba - cenanaekskurzia;

    double nedostig = cenanaekskurzia - pechalba;

да ги изнесеш след първата проверка за броя на играчките.

Също ...

    double otstapka = 0.25*suma;      // което е горе го дефинираи като  нула.

Която нула ще се промени в проверката за боря на играчките, там трябва да дефинираш само ОТСЪПКАТА !

което значи, че в else  тя трябва да е нула.

 

 

0
Didocha avatar Didocha 9 Точки

Аз уча C# , но по логика, според мен трябва тези променливи:

    double  krainacena = suma - otstapka;

    double  naem = 0.10*krainacena;

    double  pechalba = krainacena - naem;

    double ostavashtipari = pechalba - cenanaekskurzia;

    double nedostig = cenanaekskurzia - pechalba;

да ги изнесеш след първата проверка за броя на играчките.

Също ...

    double otstapka = 0.25*suma;      // което е горе го дефинираи като  нула.

Която нула ще се промени в проверката за боря на играчките, там трябва да дефинираш само ОТСЪПКАТА !

което значи, че в else  тя трябва да е нула.

0
genichka avatar genichka 8 Точки

Благодаря много.Получи се задачата.

Лек ден.

0
gtsonkov avatar gtsonkov 58 Точки

Здравей, мисля че трябва да четеш по-внимателно условиетоз а задачата, която си опитала да решиш се разминава в голяма степен с условието.

Поправих кода, който си споделила и със (//) съм вмъкнал коментари към прометите, прочети ги внимателно и виж къде са ти грешките. Но като цяло проблема е, че не се придържаш към условието.

 

https://pastebin.com/SqPBApBe

0
16/09/2018 15:35:08
gtsonkov avatar gtsonkov 58 Точки

само да добавя, че навсякъде където има // кода или думите след тях не се изпълняват от програмата и служат само за информация (просто текст)

0
genichka avatar genichka 8 Точки

Благодаря много.Махнах ненужното.   :)

0
HristoNikolov444 avatar HristoNikolov444 16 Точки

на С++

 

#include <iostream>
#include <iomanip>
#include<cmath>
using namespace std;
 
int main()
{
    double cenanaekskurzia;
    cin >> cenanaekskurzia;
    int broipazeli, broigovoreshtikukli, broiplushenimecheta, broiminioni, broikamioncheta;
    cin >> broipazeli >> broigovoreshtikukli >> broiplushenimecheta >> broiminioni >> broikamioncheta;
 
    double suma = broipazeli*2.60 + broigovoreshtikukli * 3 + broiplushenimecheta*4.10 + broiminioni*8.20 + broikamioncheta * 2;
    double broiigrachki = broipazeli + broigovoreshtikukli + broiplushenimecheta + broiminioni + broikamioncheta;
    //double otstapka = 0.25*suma; - ne se izchislqva tuk
    double pechalba = 0.00;
    //double  krainacena = suma - otstapka; - izlischno
    //double  naem = 0.10*krainacena; - ne mu e nqstoto tuk
    //double  pechalba = krainacena - naem; ne mu e mqstoto tuk
    //double ostavashtipari = pechalba - cenanaekskurzia; - ne mu e mqstoto tuk
    //double nedostig = cenanaekskurzia - pechalba; - ne mu e mqstoto tuk
   
    if (broiigrachki >= 50)
    {
        // tuk izchislqvame otstapkata ako igrachkite sa >= 50 br.
         pechalba = suma - suma * 25.0 / 100; // tova e otstapkata
        pechalba = pechalba - (pechalba * 10) / 100; // tova e naema sled nachislenata otstapka
    }
    else
    {
        // ako igrachkite sa po-malko ot 50 togava nachislqvame samo naema
        pechalba = suma - (suma * 10.0 / 100);
       
    }
    double ostavashtipari = abs(pechalba - cenanaekskurzia); // s pomoschta na abs() vzimame absoliutnata stojnost na izraza i taka go otpechatvame ne kato otricatelno chislo ako parite ne dostigat
   
    if (pechalba >= cenanaekskurzia)
    {
        // ako pechalbata e dostatachna za ekskurziata
        cout << fixed << setprecision(2) << "Yes!" << " " << ostavashtipari << " lv left." << endl;
    }
    else
    {
        // ako pechalbata ne e dostatachna za ekskurziata
        pechalba *= 0.75;
        cout << fixed << setprecision(2) << "Not enough money!" << " " << ostavashtipari << " lv needed." << endl;
    }
 
    return 0;
}

0
gstoichkov avatar gstoichkov 2 Точки

Ако не е написано и на "шльокавица" всичко ще бъде перфектно.

-колкото до решението е супер 

@HristoNikolov444

0
Edzhevit avatar Edzhevit 76 Точки

https://pastebin.com/A9NQRimN

Ето моето решение.

0