Complex Conditional Statements 08. Trade Comissions 94/100
Здравейте,
това е решението ми на задачата https://pastebin.com/bE8gygcX , но judge ми казва , че като въведе друго освен посочените градове, вместо error изписва числото под градът само че с минус отпред.
Проверих си всички входове/изходи от условието - всичко е точно , ако въведа kaspichan -20 ми изписва error (както трябва да бъде), обаче наистина ако въведа burgas 2000 ми изписва -2000.00
А if конструкцията съм я завършил с else , би трябвало да обхваща всичко което не съм описал. Прегледах кодът бая пъти , не мога да открия къде греша, прегледах и на други колеги кодовете и решенията и все още не намирам грешката си.
Благодаря.
ПРи else(останалите градове) след error.... както и в случая със switch, при default по-добре да напишеш return, вместо break .. за да не изписва -2000 след error.
Както казах, не съм чел условието на задачата. Дадох примерен код. Ако не трябва да се изписва нищо, биеш return return (за по-сигурно) и си в играта :)
Благодаря за помощта , за тази задача не исках да използвам switch-case, защото смятам , че с нея е по-лесният вариант. Иначе case конструкцията ще я ползвам в следващата задача. Входовете са с главна буква, но може да го направя и с ToLower. Благодаря и на двама ви за бързата намеса.
П.П. ето го и кода (100/100 в judge) https://pastebin.com/DUkDwv5r
Здравейте пак, написах я със switch-case конструкция , но сега пък при правилен град , но грешен sales не ми дава нищо, прескача default-a на дебъгера. Пример: sofia -20
https://pastebin.com/dudAdiTq
Не трябваше да изтриваш последният else..
Error от switch се изписва при грешно въведен град, error от else.. се изписва при стойност на продажбите <0.
Благодаря! Първоначално го махнах (последния else), защото ми излизаха два error, но не бях сложих return, сега всичко е точно. Съжалявам, че не мога да гласувам все още, за да ви дам ъп или оценка, благодаря пак!
https://pastebin.com/f0fgNW8d
Така си в играта. Нали ти казах, разцъкай го през дебъгера да видиш къде прескача кода. В случая ти със switch-case, както каза колегата, си забравил да направиш проверка за sales. Такива работи се хващат лесно като дебъгнеш. За момента пишете простички неща с малко редове код и често може и само с четене на кода да си откриеш грешката, но по-добрият вариант е да се научиш да работиш с дебъгера. Ще ти спести време и усилия и освен това ще ти помогне по-добре да разбереш как работи даденото нещо. Особено полезно като трябва да разбереш какво или защо прави чужд код.
А иначе в последното ти решение, ако искаш да е съвсем тарикатско, можеш последния if-else да го замениш с един тернарен оператор и да стане нещо такова:
П.П. Сега виждам едно нещо, което си направил и ти го отбелязвам като грешка. Няма да се впускам в подробности, информация има по въпроса много из нета, но не пиши подобни неща никога:
Пропускането на скобите е изключително лоша практика, не си ги спестявай. Знам, че изглежда много яко така на един ред, но не свиквай да пишеш така иначе ще си навлечеш сериозни неприятности вбъдеще. Можеш да напишеш if на един ред (евентуално), но нещо такова
Супер простичък пример ще ти дам, но се опитай да мислиш мащабно. Представи си, че ти се наложи после тая програма да я промениш и освен да променяш коефициента на комисионната, трябва да изпратиш и известие до някого (или пък до много хора), да запишеш нещо в база данни и, да кажем, тоя продавач да получи допълнителен бонус, защото е натрупал еди-какъв-си оборот. Давам ти реални примери. В тоя момент ти става лошо, защото задето си си спестил няколко скоби, сега трябва да преформатираш целия код и по-лошото, може да допуснеш грешка кое къде трябва да е. Сега си представи, че твоя код го е писал някой друг, а промените, които споменах, трябва да ги добавиш ти.
Еми, това е. Дерзай и успех :)
TonislavAtanasov много благодаря за отделеното време, приемам критиката , даже обичам критиката поради факта, че тя ме изгражда към по-добро. Прав си за абсолютно всичко. По принцип гледам да съм изряден в писането на код, не знам защо това ми е убягнало, явно в бързината ли , не знам. Дано не ме сложат в руския сайт
все пак още се уча. Благодаря ти за съветите!
https://pastebin.com/tJ8piGnf
Споко. За руския сайт ще трябва още доста да се постараеш :D
Гледай като пишеш да пишеш правилно и по добрите конвенции, за да свикнеш да си работиш така.
Другото важно е да се научиш да документираш кода, който пишеш. В момента пишете много кратки програмки, които ако спазваш добро именоване на променливите, ще са общо взето self-documented, но е хубаво да свиквате да вмъквате и по някой коментар. Сещам се за тия работи, щото точно в момента това правя :D
Ето пример, забележи на колко ред код, колко документация има. Да не ти пука, че е на PHP, самият код не е важен в случая.
Това впоследствие ако знаеш колко време и усилия спестява, няма да ти се вярва. Понеже знам, че на курсовете ги говорите тези неща, затова искам да дам и реален отзив от практиката, че не ви пълнят главите с врели-некипели :)