Scholarship - Conditional Statements - Programming Basics C#
Както, естествено, се подразбира, имам поблем с кода, някой да има идеи къде греша?
using System;
namespace scholarShip
{
class Program
{
static void Main(string[] args)
{
double incomeBGN = double.Parse(Console.ReadLine());
double middleSucces = double.Parse(Console.ReadLine());
double minimalSalary = double.Parse(Console.ReadLine());
double socialScholarship = Math.Floor(0.35 * minimalSalary);
double excelletScholarship = Math.Floor(middleSucces * 25);
if (incomeBGN >= minimalSalary)
{
Console.WriteLine("You cannot get a scholarship!");
}
else if (middleSucces < 4.50)
{
Console.WriteLine("You cannot get a scholarship!");
}
else if (middleSucces < 5.50)
{
Console.WriteLine($"You get a Social scholarship {socialScholarship} BGN");
}
else if (incomeBGN < minimalSalary)
{
Console.WriteLine($"You get a Social scholarship {socialScholarship} BGN");
}
else if (middleSucces >= 4.50 && incomeBGN < minimalSalary)
{
if (socialScholarship >= excelletScholarship)
{
Console.WriteLine($"You get a Social scholarship {socialScholarship} BGN");
}
}
else if (middleSucces >= 5.50)
{
Console.WriteLine($"You get a scholarship for excellent results {excelletScholarship} BGN");
if (socialScholarship > excelletScholarship)
{
Console.WriteLine($"You get a Social scholarship {socialScholarship} BGN");
}
}
}
}
}
Промених го коренно и Judge ми дава 75 точки.
using System;
namespace scholarShip
{
class Program
{
static void Main(string[] args)
{
double incomeBGN = double.Parse(Console.ReadLine());
double middleSucces = double.Parse(Console.ReadLine());
double minimalSalary = double.Parse(Console.ReadLine());
double socialScholarship = 0.35 * minimalSalary; //math.floor долу
double excelletScholarship = middleSucces * 25; //math.floor долу
if (middleSucces < 4.5 || incomeBGN >= minimalSalary)
{
Console.WriteLine("You cannot get a scholarship!");
}
else if (middleSucces >= 5.5)
{
if (excelletScholarship >= socialScholarship)
{
Console.WriteLine($"You get a scholarship for excellent results {Math.Floor(excelletScholarship)} BGN");
}
else if(socialScholarship > excelletScholarship)
{
Console.WriteLine($"You get a Social scholarship {Math.Floor(socialScholarship)} BGN");
}
}
else if (incomeBGN < minimalSalary && middleSucces >= 4.5)
{
Console.WriteLine($"You get a Social scholarship {Math.Floor(socialScholarship)} BGN");
}
}
}
}
Условието е:
1.*Стипендии
Учениците могат да кандидатстват за социална стипендия или за стипендия за отличен успех. Изискване за социална стипендия - доход на член от семейството по-малък от минималната работна заплата и успех над 4.5. Размер на социалната стипендия - 35% от минималната работна заплата. Изискване за стипендия за отличен успех - успех над 5.5, включително. Размер на стипендията за отличен успех - успехът на ученика, умножен по коефициент 25.
Напишете програма, която при въведени доход, успех и минимална работна заплата, дава информация дали ученик има право да получава стипендия, и стойността на стипендията, която е по-висока за него.
Вход
Потребителят въвежда 3 числа, по едно на ред:
Изход
"You get a Social scholarship {стойност на стипендия} BGN"
Резултатът се закръгля до по-малкото цяло число.
Примерен вход и изход
Вход
Изход
Обяснения
480.00
4.60
450.00
You cannot get a scholarship!
Доходът от 480 лв. е по-висок от минималната работна заплата 450 лв. → ученикът не може да получава социална стипендия.
Успех 4.60 < 5.50 → ученикът не може да получава стипендия за отличен успех.
300.00
5.65
420.00
You get a Social scholarship 147 BGN
300 лв. < 420 лв. и 5.65 >4.50 → ученикът може да получава социална стипендия 35% * 420 лв. = 147 лв.
Успех 5.65 > 5.50 → ученикът може да получава стипендия за отличен успех 5.65 * 25 = 141.25 лв.
147 лв. > 141.25 лв. → ученикът ще получава социална стипендия.
В първият if не трябва да имаш || incomeBGN >= minimalSalary . Сега ако някой има 6,00 и високи приходи пак не получава стипедния, защото е в else не стига до проверката за отличен успех. Тук може да видиш решение, в което освен ако човек не отговаря на условията, дадена стипендия е 0 по default. Двете стипендии се сравняват накрая и ако и двете са различни от 0, се гледа коя е по-висока и се изписва съответно съобщение.
В оригиналния код грешката ти пак е това, че стипендията за успех се влияе от приходите, както и това, че нямаш правилното форматиране на изхода.
Благодаря. Размених им местата и даде 93 точки, значи някъде има още една грешка (при тест 14, без да дава подробности).