задача: BonusScore
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication2
{
class BonusScore
{
static void Main(string[] args)
{
Console.WriteLine("Enter score:");
var num = int.Parse(Console.ReadLine());
double bonusScore = 0.0;
if (num <= 100)
{
bonusScore = 5;
}
else if (num > 100)
{
bonusScore = num * 0.20;
}
else if (num > 1000)
{
bonusScore = num * 0.10;
}
if (num % 2 == 0)
{
bonusScore = 1;
}
else if (num % 10 == 5)
{
bonusScore = 2;
}
Console.WriteLine("Bonus score: {0}", bonusScore);
Console.WriteLine("Total score: {0}",bonusScore+num);
}
}
}
изчислява ми само последните два бонуса, защо?
Погледни моето решение, първо проверявам дали числото е по-голямо от 1000, помисли къде е грешката.
https://github.com/stefkavasileva/Programming-Basics/blob/master/Exercises/SimpleConditionalStatements/06.BonusScore/BonusScore.cs
ok
Точно там е проблема. И знам какво пише в условието, че е подредено първо 100 после 1000, но това е за да го сбъркате и да се сетите къде може да е проблема. Клопка е сложена за да се помъчите и помислите как да я оправите.
В условието има подводен камък. И ако не внимаваш "Judge" - "гръмва". При вход по-голям от 100, else if не влиза в следваща проверка, тъй като условието е изпълнено. Успех!
Ето това е кода, който най-много ми помогна и с него разбрах задачата! Много ти благодаря!