Loading...
+ Нов въпрос
danyboy avatar danyboy 2 Точки

task - 3 sales

Здравейте колеги имам нужда от малко помощ . немога да разбера защо judge не изписва нищо в: Your output: " нищо"  при положение че аз на конзолата  получавам отговор. изглежда че работи няма грешки предупреждения и уви резултата е правилен " на моят телевизор" 

 

Solution #13008190 by danyboy for problem 03. Sales

https://pastebin.com/yPPjxpv1 

 

ако някои може да помогне с идея ще съм му много благодарен

Тагове:
0
C++ Fundamentals
galin_kostadinov avatar galin_kostadinov 166 Точки
Best Answer

Привет!

bool find_town(vector<sales> &inputVector, string city, double volume_) {

    for (vector<sales>::iterator it = inputVector.begin(); it != inputVector.end(); ++it) {
        if (it->getTown() == city) {
            double sum = it->getVolume();
            sum += volume_;
            it->setVolume(sum);
            return true;
        }
    }

 return false; // добавих го
}

Трябва да гарантираш, че винаги ще се върне някаква стойност, тъй като имаш само  if(), но нямаш какво да върне в противен случай.

(Пробвал съм решението след добавктата и при мен минава 100/100, макар, че първия път ми гръмна с "Лимит време" )

Поздрави!

0
30/10/2019 17:10:16
danyboy avatar danyboy 2 Точки

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

0
31/10/2019 09:09:51
danyboy avatar danyboy 2 Точки

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

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

Привет, колега,

Използвам направо тази темата за да ти отговоря на въпроса и на предната.

Имаш доста вярни неща. Продължавай и не се отказвай! :)

Имаш и доста грешни неща.
Колегата Галин е посочил една от най-големите грешки.

Предупреждавам и че getter-ите ти връщат референция към оригинала.
Внимавай, че голяма лопата ще настъпиш.

Решението на задачата (доста изчистено такова) е споделено от колегата kolioi.
Гледай него и го сравни с твоето.

Поднасям ти градивна критика и искам да я приемеш сериозно.
Отказах се да гледам решението ти след 2-3 минути. Не за нещо друго, а просто наименуването на променливите ти е под всякаква критика. За читателя на твоя код (в случая) става невъзможно да разбера какво си искал да направиш.

vector<string> & first_town - това сега 1 град ли е или поредица от градове?
vector<sales> & inputVector - аз го виждам, че е вектор. Напиши ми какво значи тоя вектор
Функция "print", която сортира ... няма начин просто.

bool find_shit = sale.find_town(vec,townIn,volume);
if(!find_shit ){
    vec.push_back(sale);
}

За това съм без коментар просто.

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

Жив и здрав
И не се притеснявай, ще борим OOП-то в детайли в рамките на C++ Advanced

0
danyboy avatar danyboy 2 Точки

Живко благодаря за отговора. за променливите и особено името на една от функците.....  но не това ме притеснява а: " Предупреждавам и че getter-ите ти връщат референция към оригинала.
Внимавай, че голяма лопата ще настъпиш."  какво значи това без & ли да ги пиша ?

погледнах и на колегата kolioi кода и аз искам да пиша така като порасна но както каза по нагоре : Продължавай и не се отказвай! :)  все пак това ми е първия Метод мерси още веднъж 

0
31/10/2019 09:08:40
j.petrov_90 avatar j.petrov_90 373 Точки

Ами връщаш референция от getter функция.
Това е опасно поради 2 причини:
- ако върнеш локална променлива(която не е част от класа) имаш отромен бъг
-  по този начин "счупваш" правилото за енкапсулация (т.е. хем имаш нещо private, а хем му даваш публичен достъп като функцията ти връща оригинала). 

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