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

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

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

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

 

Тагове:
0
Programming Basics
LiGuru avatar LiGuru 15 Точки

Понеже не си дал код, ще отговоря принципно.

Проверявайте първо за най-голямото число.

 

if (num > 1000)
if (num > 100)

.....

Задавай си рейндж

if (num > 100 && num < 1000)

....

 

0
davichonov365 avatar davichonov365 127 Точки

Веднага го пробвам !! Мерси

0
dddinkobakalov avatar dddinkobakalov 22 Точки

Здравей,

в случая ти може би все още не си взел този тип допълване на уловието в ИФ - if (num > 100 && num < 1000),

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

1. Започваш с 

if (num > 1000)
            {
                bonusScore = num * 10 /100;
               
                
            }

и програмата изпълнява този бонсу при числа над 1000, сед което задаваш нов ИФ, който ако не е число над 1000 да бъде изпълнен:

2. 

else if (num > 100)
            {
                bonusScore = num * 20 / 100;
                
                
            }

Ако го зададеш с два ИФ-а или по обратен ред, ще имаш дублирането на бонуса.

Принципно в следващата ти лекция ще разгледате как да комбинирате такива резултати от някакъв параметър до друг параметър, както  е показал колегата по-горе

Успех! 

0
17/07/2016 20:32:17
davichonov365 avatar davichonov365 127 Точки

Ще пробвам и този вариант,. като цяло в judge ми дава 50 точки,.ще го измисля ,.гледам да стигна сам до решението а не да препиша нещо готово,. мерси

0
btonew avatar btonew 43 Точки

Увери се, че изчисленията ти са правилни. Това е най-вероятната причина за 50/100 резултат.

0
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
Kamen1981 avatar Kamen1981 1 Точки

За да не се бъркаш в началото можеш да го направиш така:

if (num > 100 && num <= 1000) 

{

 

}

else if (num > 1000) 

{

}

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