Loading...
davichonov365 avatar davichonov365 127 Точки

Проблем със Задача 6 ( Bonus Score) от лекция "Логически Проверки"

Имам проблем със задача 6 от Логически проверки:

1.Как да избегна противоречието в отговорите,. примерно в условието е дадено число по голямо от 100 и второ условие число по голямо от 1000 ,.. но ако напиша 5698 примерно -то покрива и двете условия и ми изкарва 4 отговора и ми гърми всеки път в judge

 

Тагове:
0
Programming Basics
dddinkobakalov avatar dddinkobakalov 22 Точки

Защо не качиш един вариант на твоето решение в http://pastebin.com/ и да го прегледаме, така можем да ти кажем къде точно грешиш, дали е изчислителна грешка, или нещо в подредбата на кода. 

0
davichonov365 avatar davichonov365 127 Точки

http://pastebin.com/UemevuxF

Дава ми 50 точки,. знам че е дълго и непрактично ,. като за начинаещ :)

 

 

 

0
btonew avatar btonew 43 Точки

Правиш излишен брой проверки, които те объркват допълнително. Няма да ти пращам моето решение щом искаш да опиташ сам, но ще се опитам да ти помогна с насоки.

Като начало си създай една променлива от тип double, която ще играе ролята на бонуса, и ще променяш през цялото време. Сега трябва да започнеш с проверките от условието:

1. провери дали входът е > 1000, след което бонусът ще е входът * 0.1

2. провери дали входът е > 100, след което бонусът ще е входът * 0.2

3. нито едно от двете? бонусът е 5

4. провери дали входът се дели на 2 без остатък, ако се дели - добави +1 към бонуса

5. провери дали входът завършва на 5 -> добавяш 2, ако е такъв случаят, и дотук с проверките. Сега изкарай исканият изход.

0
dddinkobakalov avatar dddinkobakalov 22 Точки

Според мен няма смисъл толкова много ифове да използваш един в друг. Мисля че там ти бяга логиката и затова и решението ти дава само 50 точки. А и коментирахме по-горе да започнеш първо с ИФ за големите числа if (num > 1000). За да не ти го дублира след като преди него си сложил if (num > 100). 

Също така може да си изнесеш бонусите отделно. Един път за това дали числото е до 100, до 1000, или над хиляда, и един път за другите условия, да завършва на 5 и да е четно мисля беше. И накрая да си добавиш бонуса към числото. Например накрая си въвеждаш бонуса, а след това си го добавяш към числото:

  1.  Console.WriteLine(bonusScore);

  2.  Console.WriteLine(num + bonusScore);

 

0
dddinkobakalov avatar dddinkobakalov 22 Точки

Да, аз смятам по същия начин и му написах подобен коментар. Няма нужда толкова проверки една в друга да прави. Може да се опита да си ги сметне по възможно най- простия начин и накрая да си ги събере бонусите. АКо имаш нужа пиши и ще ти изпратим и готов вариант, може като го погледнеш и да ти светне. Ще видиш че си на прав път, даже малко си усложняваш сам нещата.

0
davichonov365 avatar davichonov365 127 Точки

Аз разбирам логиката,. но още не мога да го напиша като смислен код ,. затова отначало ми даваше по два отговора ,. примерно 17567 като вход отговаря и на двете условия ,. по голямо от 100 и 1000 ,. интересно ми е да видя стегнато и кратко решение в няколко реда,. начина на мислене !

Мерси

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