Професионална програма
Loading...
+ Нов въпрос
DimovIvan avatar DimovIvan 6 Точки

"Основи на програмирането със C++"/Глава 9.2 Задача: дни за страстно пазаруване

https://cpp-book.softuni.bg/chapter-09-problems-for-champions-part-2.html

Помогнете ми с тази задача, моля! Правя я както е дадено в упътването, но judge не ми дава всички точки. Ето моето решение:

https://pastebin.com/QWVP9shN

Тагове:
0
Programming Basics
RaUndreundre avatar RaUndreundre 52 Точки

Така както си написал кода дава 80/100. При сума 0 и при команда % не можеш да имаш покупка, защото 0 / 2.0 = 0 а с 0 не се пазарува. Ако го корегираш това, резултата ще е 90/100. Остава един тест който не минава - седмия. За там, не знам. Ако някой с повече знания даде идея ще е хубаво. Ето до къде я докарах задачата:

#include <iostream>
#include <string>

int main() {
    double money;
    std::cin >> money;
    std::string comand;
    std::cin.ignore();
    getline(std::cin, comand);
    while (comand != "mall.Enter") {
        std::cin >> comand;
    }
    getline(std::cin, comand);
    int purchases = 0;
    while (comand != "mall.Exit") {
        for (int i = 0; i < comand.size(); i++) {
            char currentSimbol = comand[i];
            if (currentSimbol == '*') {
                money += 10;
                continue;
            }
            double price = 0;
            if (currentSimbol == '%') {
                price = money * 0.5;
                if (price <= 0) {
                    continue;
                }
            } else if (currentSimbol >= 'A' && currentSimbol <= 'Z') {
                price = int(currentSimbol) * 0.5;
            } else if (currentSimbol >= 'a' && currentSimbol <= 'z') {
                price = int(currentSimbol) * 0.3;
            } else {
                price = int(currentSimbol);
            }
            if (money <= 0 || money < price) {
                continue;
            }
            money -= price;
            purchases++;
        }
        getline(std::cin, comand);
    }
    std::cout.setf(std::ios::fixed);
    std::cout.precision(2);
    if (purchases == 0) {
        std::cout << "No purchases. Money left: " << money << " lv."
                  << std::endl;
    } else {
        std::cout << purchases << " purchases. Money left: " << money << " lv."
                  << std::endl;
    }
    return 0;
}

 

1
07/04/2021 15:21:50
DimovIvan avatar DimovIvan 6 Точки

Благодаря за помощта!

Ако намеря решение за последният тест ще го публикувам.

1