Loading...
LilianaVelvheva avatar LilianaVelvheva 17 Точки

Къде ми е грешката?

https://pastebin.com/BA17FNGe

Задача 2. Пазаруване

Петър иска да купи N видеокарти, M процесора и P на брой рам памет. Ако броя на видеокартите е по-голям от този на процесорите получава 15% отстъпка от крайната сметка. Важат следните цени:

  • Видеокарта – 250 лв./бр.
  • Процесор – 35% от цената на закупените видеокарти/бр.
  • Рам памет – 10% от цената на закупените видеокарти/бр.

Да се изчисли нужната сума за закупуване на материалите и да се пресметне дали бюджета ще му стигне.

Вход

Входът се състои от четири реда:

  1. Бюджетът на Петър - реално число в интервала [0.0…100000.0]
  2. Броят видеокарти - цяло число в интервала [0100]
  3. Броят процесори - цяло число в интервала [0…100]
  4. Броят рам памет - цяло число в интервала [0…100]

Изход

На конзолата се отпечатва 1 ред, който трябва да изглежда по следния начин:

  • Ако бюджета е достатъчен:
  • You have {остатъчен бюджет} leva left!"
  • Ако сумата надхвърля бюджета:

"Not enough money! You need {нужна сума} leva more!"

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

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

Вход

Изход

Обяснения

900

2

1

3

You have 198.75 leva left!

Петър разполага с бюджет 900 лева.

Купува 2 видеокарти по 250лв., общо 500

Цената на един процесор е 35% от цената на видеокартите. 35% от 500 е 175лв.

Той иска да купи само един процесор.

Цената на един брой рам памет е 10% от цената на видеокартите. 10% от 500 е 50лв.

Петър иска да купи 3 броя рам памет.
3 * 50 = 150. Общо 500 + 175 + 150 = 825 лв.

Броя на видеокартите е по-голям от броя на процесорите, затова той получава 15% отстъпка от крайната цена.

825 – 15% = 701.25 лв.

701.25 <= 900, парите са му достатъчни и той остава със 198.75лв.

920.45

3

1

1

Not enough money! You need 3.92 leva more!

 

 

Тагове:
0
Programming Basics
VasilKotsev avatar VasilKotsev 830 Точки

Грешката ви е в сметките при изчисляването на цената на компонентите. Прикачвам ви поправеното решение:

function shopping(budget, videoCardCount, processorsCount, ramMemoryCount) {
    arguments = [...arguments].map(arg => +arg);
    const calcDiscountedPricePerItem = (price, percentage) => price - price * (1 - percentage);

    const gpuPrice = 250;
    const cpuPricePercentage = 0.35;
    const ramPricePercentage = 0.1;
    const gpuPercentageDiscount = 0.15;

    const totalGpuPrice = videoCardCount * gpuPrice;
    const totalCpuPrice = processorsCount * calcDiscountedPricePerItem(totalGpuPrice, cpuPricePercentage);
    const totalRamPrice = ramMemoryCount * calcDiscountedPricePerItem(totalGpuPrice, ramPricePercentage);

    let totalSum = totalGpuPrice + totalCpuPrice + totalRamPrice;

    if (videoCardCount > processorsCount) {
        totalSum *= 1 - gpuPercentageDiscount;
    }

    const cost = budget - totalSum;

    if (cost >= 0) {
        console.log(`You have ${cost.toFixed(2)} leva left!`);
    } else {
        console.log(`Not enough money! You need ${(-cost).toFixed(2)} leva more!`);
    }
}
0
22/12/2020 17:54:35
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.