Loading...
IvanHaribin avatar IvanHaribin 0 Точки

Simple Conditional Statements, задача 6 - Bonus Score

Колеги, имам въпрос относно задача 6 от Simple Conditional Statements, идеята е 

Дадено е цяло число – брой точки. Върху него се начисляват бонус точки по правилата, описани по-долу. Да се напише програма, която пресмята бонус точките за това число и общия брой точки с бонусите.

  • Ако числото е до 100 включително, бонус точките са 5.
  • Ако числото е по-голямо от 100, бонус точките са 20% от числото.
  • Ако числото е по-голямо от 1000, бонус точките са 10% от числото.
  • Допълнителни бонус точки (начисляват се отделно от предходните):
    • За четно число à + 1 т.
    • За число, което завършва на 5 à + 2 т.

Пробвах с този код, но ми дава 70/100, някой може ли да ми обясни защо така и къде греша? - 

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

namespace Bonus_Points
{
    class Program
    {
        static void Main(string[] args)
        {
            double points = double.Parse(Console.ReadLine());
            int even = 1;
            int odd = 2;
            if (points <= 100)
                if (points % 2 == 0)
                {
                    Console.WriteLine("Bonus score: {0}", 5 + even);
                    Console.WriteLine("Total score: {0}", points + 5 + even);
                }
                else
                {
                    Console.WriteLine("Bonus score: {0}", 5 + odd);
                    Console.WriteLine("Total score: {0}", points + 5 + odd);
                }
            if (points > 100 && points<=999)
                if (points % 2 == 0)
                {
                    Console.WriteLine("Bonus score: {0}", (points * 0.2) + even);
                    Console.WriteLine("Total score: {0}", points + (points * 0.2) + even);
                }
                else
                {
                    Console.WriteLine("Bonus score: {0}", (points * 0.2) + odd);
                    Console.WriteLine("Total score: {0}", points + (points * 0.2) + odd);
                }
            else if (points > 1000)
                if (points % 2 == 0)
                {
                    Console.WriteLine("Bonus score: {0}", (points * 0.1) + even);
                    Console.WriteLine("Total score: {0}", points + (points * 0.1) + even);
                }
                else
                {
                    Console.WriteLine("Bonus score: {0}", (points * 0.1) + odd);
                    Console.WriteLine("Total score: {0}", points + (points * 0.1) + odd);
                }
        }
    }
}

Тагове:
0
Programming Basics
elena0420 avatar elena0420 11 Точки
Best Answer

Аз имах същия проблем затова я реших само с if.

Това е решението за 100 точки с коментари:  http://pastebin.com/N5Biip8m

0
MartinBG avatar MartinBG 4803 Точки

В условието се казва, че +2 точки се дават за числа, завършващи на 5, а във вашата програма този бонус се дава за всяко нечетно число.

Ето един булев (boolean) израз за определяне дали едно число завършва на 5:

((number % 10) == 5)

0
Daniel.Kolev avatar Daniel.Kolev 9 Точки

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

namespace CurrencyConvert
{
    class Program
    {
        static void Main(string[] args)
        {
            var a = double.Parse(Console.ReadLine());
            var bonus = 0.0;
            if (a <= 100)
            {
                bonus += 5;
            }
            else if (a <= 1000)
            {
                bonus += a * 0.2;
            }
            else if (a > 1000)
            {
                bonus += a * 0.1;
            }
            if (a % 2 == 0)
            {
                bonus += 1;
            }else if (a % 5 ==0)
            {
                bonus += 2;
            }
            Console.WriteLine(bonus);
            Console.WriteLine(a + bonus);
        }
    }
}



Това е моето решение

-1
parissaintgermain87 avatar parissaintgermain87 1 Точки

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

namespace Bonus_Scores
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Write("Enter score: ");
            var num = int.Parse(Console.ReadLine());
            var bonus = 0.0;

            if (num <= 100)          
            {
                bonus = 5;  
            }
            if (num > 100 && num <= 1000)                 
            {
                bonus = 0.20 * num;                
            }
            if (num > 1000)                   
            {
                bonus = 0.10 * num;             
            }
            if (num % 2 == 0)                      
            {
                bonus = bonus + 1;
            }
            if (num % 10 == 5)        
            {
                bonus = bonus + 2;
            }
            Console.WriteLine("Bonus Score: {0}",bonus);        
            Console.WriteLine("Total Score: {0}",num + bonus);
        }
    }
}

0
TeodorStefanovPld avatar TeodorStefanovPld 1274 Точки

те са ти дали отговорите но проблема не е в кода ти а в логиката. каза ли са ти четно или ако се дели на 5 а ти никъде не го проверяваш това мога да ти подам 33 и това в твоята логика ще му дадеш точки а по условието на задачата би трябвало да не даваш и от там ти гърми. другото е вече само нагласяне на кода.

0
crassi avatar crassi 2 Точки

Ами в условието ти е упоменато, че се добавят 2 бонус точки, когато числото завършва на 5, а не когато е нечетно, както ти си го написал. Пробвай да измислиш начин с остатък с делене, както с четните числа, и го вкарай в кода.

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