Loading...
velizarcho123 avatar velizarcho123 2 Точки

Programming basics май 2016 - Bonus Score - грешка в точките..

Това е моят код:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication14
{
    class Program
    {
        static void Main()
        {
            int number = int.Parse(Console.ReadLine());
            double bonus = 0;

            if (number <= 100)
            {
                bonus = 5;
            }
            else if (number > 100)
            {
                bonus = (20 / 100) * number;
            }
            else if (number > 1000)
            {
                bonus = (10 / 100 * number);
            }

            Console.WriteLine(bonus);
        }
    }
}

Когато напиша число по-малко от 100 ми дава бонус точки 5 (нормално), но ако e число над 100 ми дава бонус 0.. В джъджа дава 0 от 100 верни. Изключително нов съм в програмирането и мн неща не са ми ясни.. Къде бъркам?
 

Тагове:
1
Programming Basics 15/06/2016 14:19:55
Luko193 avatar Luko193 342 Точки

Грешката ти е в това, че делиш две цели числа, като 20/100, при две цели числа операторът за делене не пресмята остатък и затова ти дава нула, за да решиш проблема просто направи всяко едно число, което делиш десетично. Например 20.0/100. Дано да съм помогнал.

1
velizarcho123 avatar velizarcho123 2 Точки

Направих ги на 20.0 и 10.0, като пусна програмата на 136 число ми дава 27.2 точки, но в джъджа пак гърмя...

0
Luko193 avatar Luko193 342 Точки

Добави във втория ти if : if (score > 100 && score <= 1000), тъй като трябва да се прави проверка за това дали точките са по-големи от 100, но и по-малки или равни на 1000, в противен случай ако числото е по-голямо от 1000, пак ще се изпълни този if и ще бъде грешно. Също така пропускаш и другото условие от задачата за допълнителни бонус точки:

 if (score % 2 == 0)
        {
            bonusScore += 1;
        }
        else if (score % 5 == 0)
        {
            bonusScore += 2;
        }

0
15/06/2016 15:32:26
borislav9212 avatar borislav9212 745 Точки

Имаш няколко грешки double bonus = 0; -> double bonus = 0.0; else if (number > 100) трябва да го ограничиш че влиза и в двете проверки ->  else if (number > 100 && number <= 1000). Забравяш да провериш дали числото е четно (number % 2 == 0) така се проверява с модул деление "%" и дали заваршва на 5 -> (number % 10 == 5) taka така взимаш последното число и проверяваш дали завършва на 5. и накрая трябва да отпечатваш и общите точки. Ето кода ти редактиран. -> http://pastebin.com/v3CqZDYB

0
velizarcho123 avatar velizarcho123 2 Точки

Благодаря!

1
IvMironov avatar IvMironov 35 Точки

Здравей,

В случая когато числото е над 100, бонус точките са процент от резултата, което почти винаги ще върне реално число със запетая. Както колегата ти е написал по-горе така програмата счита, че ти правиш пресмятане на цели числа и не ти връща реално число като резултат, а цяло - в случая 0. Също така можеш вместо да изписваш делението (20/100) просто да запишеш направо 0.2 и така ще се има предвид, че трябва да върне реално число като резултат. Дано съм бил полезен.

Поздрави  

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