Проблем със Задача 6 ( Bonus Score) от лекция "Логически Проверки"
Имам проблем със задача 6 от Логически проверки:
1.Как да избегна противоречието в отговорите,. примерно в условието е дадено число по голямо от 100 и второ условие число по голямо от 1000 ,.. но ако напиша 5698 примерно -то покрива и двете условия и ми изкарва 4 отговора и ми гърми всеки път в judge
http://pastebin.com/UemevuxF
Дава ми 50 точки,. знам че е дълго и непрактично ,. като за начинаещ :)
Правиш излишен брой проверки, които те объркват допълнително. Няма да ти пращам моето решение щом искаш да опиташ сам, но ще се опитам да ти помогна с насоки.
Като начало си създай една променлива от тип double, която ще играе ролята на бонуса, и ще променяш през цялото време. Сега трябва да започнеш с проверките от условието:
1. провери дали входът е > 1000, след което бонусът ще е входът * 0.1
2. провери дали входът е > 100, след което бонусът ще е входът * 0.2
3. нито едно от двете? бонусът е 5
4. провери дали входът се дели на 2 без остатък, ако се дели - добави +1 към бонуса
5. провери дали входът завършва на 5 -> добавяш 2, ако е такъв случаят, и дотук с проверките. Сега изкарай исканият изход.
Според мен няма смисъл толкова много ифове да използваш един в друг. Мисля че там ти бяга логиката и затова и решението ти дава само 50 точки. А и коментирахме по-горе да започнеш първо с ИФ за големите числа if (num > 1000). За да не ти го дублира след като преди него си сложил if (num > 100).
Също така може да си изнесеш бонусите отделно. Един път за това дали числото е до 100, до 1000, или над хиляда, и един път за другите условия, да завършва на 5 и да е четно мисля беше. И накрая да си добавиш бонуса към числото. Например накрая си въвеждаш бонуса, а след това си го добавяш към числото:
Console.WriteLine(bonusScore);
Console.WriteLine(num + bonusScore);
Да, аз смятам по същия начин и му написах подобен коментар. Няма нужда толкова проверки една в друга да прави. Може да се опита да си ги сметне по възможно най- простия начин и накрая да си ги събере бонусите. АКо имаш нужа пиши и ще ти изпратим и готов вариант, може като го погледнеш и да ти светне. Ще видиш че си на прав път, даже малко си усложняваш сам нещата.
Аз разбирам логиката,. но още не мога да го напиша като смислен код ,. затова отначало ми даваше по два отговора ,. примерно 17567 като вход отговаря и на двете условия ,. по голямо от 100 и 1000 ,. интересно ми е да видя стегнато и кратко решение в няколко реда,. начина на мислене !
Мерси
http://pastebin.com/fd9n8S1F