Loading...
m.nikolov97 avatar m.nikolov97 25 Точки

Задача 3: Sales

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

Имам проблем с последната задача от домашното за Class and Objects.

След като разгледах условието, започнах да мисля решение, с което да упражня знанията си по ООП. След няколко опита достигнах до това, че няма смисъл да правя custom структура от данни за задачата, защото в нея са важни 2 неща - града и продажбите. Реших да използвам map, където ключът ми е името на града, а стойността - продажбите. Всеки път когато прочета нов ред, преди да вкарам данните в map-a, търся в него по ключ (името на града) и ако няма такъв елемент, го вкарвам, а ако има - просто добавям новата сума от продажбите към предходната. За жалост това решение ми дава 80/100 точки, като на Тест 2 ми дава run time error. 

Нямам много други идеи какво мога да направя, за да подобря задачата.. Също така забелязах, че всички (с изключение на 1 човек) имат същия резултат като моя. Ще съм много благодарен, ако някой ми даде насоки относно въпросната задача!

Тагове:
1
C++ Fundamentals 28/10/2019 11:12:16
dmartinov avatar dmartinov 37 Точки

Здравей, аз също съм в търсене на заветните 20 точки и за съжаление не виждам какво може да ме спъва. Използвам абсолютно същия подход като твоя и също като теб гърмя на втория тест, но не с run time error, а с грешен отговор. Покажи твоят код, за да видим защо ти дава run time, тъй като това е някаква грешка в кода, а не в самите изчисления. Ето моето решение:

 

#include <string>
#include <iostream>
#include <map>

class sales
{
    public:
    std::string town = "";
    std::string product = "";
    double price = 0.0;
    double quantity = 0.0;
};

std::map<std::string,double> readInput (std::string town,
                                        std::string product,
                                        double price,
                                        double quantity,
                                        std::map<std::string,double> & output)
{
   int numberOfInputs = 0;
   double totalPrice = 0.0;

   std::cin >> numberOfInputs;

   for(int i = 0; i < numberOfInputs; ++i)
    {
        std::cin >> town;
        std::cin >> product;
        std::cin >> price;
        std::cin >> quantity;

        totalPrice = price * quantity;
        output[town] += totalPrice;
    }

    return output;
}

void printResult (std::map<std::string,double> & output)
{
    std::map<std::string,double>::iterator itr;

    for(itr = output.begin(); itr != output.end(); ++itr)
    {
        std::cout << itr -> first << " -> ";
        std::cout.setf(std::iostream::fixed);
        std::cout.precision(2);
        std::cout << itr -> second << std::endl;
    }
}

int main()
{
    sales store;

    std::map<std::string,double> output;

    readInput (store.town,
               store.product,
               store.price,
               store.quantity,
               output);

    printResult(output);

  return 0;
}
 

0
m.nikolov97 avatar m.nikolov97 25 Точки

Ами всъщност като отида в judge на задачата, на submission-a ми дава знак "*" - грешка при изпълнение, но като вляза на детайлите ми изписва - Test #2 (Runtime error). 

Ето това е кодът ми: https://pastebin.com/VBH7CHfi.

0
j.petrov_90 avatar j.petrov_90 373 Точки

Това домашно натрупах много негативни точки. Не ме линчувайте ...
Имаше проблем с единиятвход.
Вече е поправен и решенията ви автоматично са преоценени.
Повечето хора, които са си решили задачата вече имат 100/100.

Относно това, че сте "прозряли", че няма смисъл от ООП -> имайте предвид, че целта е да си упражните ООП-то.
Всяка една задача може да бъде решена и без ООП. Това не е целта.
Има цели езици за програмиране (като С например), където ООП и да искате - няма :)

Поздрави

2
28/10/2019 16:51:53
dmartinov avatar dmartinov 37 Точки

O, в никакъв случай няма да те линчуваме. Поне аз :) Даже сме горди, че "дебъгнахме" домашното! :) Макар да не виждах какво judge ни подава на входа, бях сигурен, че кода ми е работещ! Тоест - има смисъл от преподаденото и наученото :)

Относно прозрението, моя код включва OOP. Дори Смея да твърдя, че това е едно от най-структурираните ми домашни до момента :) Определено това, което ни преподаваш повлия на моя стил на писане (макар да съм нов и все още гъвкав в това отношение).

1
danyboy avatar danyboy 2 Точки

Живко моля погледни това  ->    Solution #13008880 by danyboy for problem 03. Sales  не ми изкарва нищо а получавам резултат на моя комп. Иначе с мап е песен . но нали целта е точно да потренираме ооп

0
j.petrov_90 avatar j.petrov_90 373 Точки

Отговорих ти в другата тема.

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.