Софтуерно Инженерство
Loading...
+ Нов въпрос
Vardanss avatar Vardanss 0 Точки

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");
                }
            }
        }
    }
}
 

 

DennisKostadinov avatar DennisKostadinov 15 Точки

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

напр:

Console.WriteLine($"You get a Social scholarship {socialScholarship:f2} BGN");

0
Vardanss avatar Vardanss 0 Точки

Промених го коренно и 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 числа, по едно на ред:

  1. Доход в лева - реално число в интервала [0.00..6000.00]
  2. Среден успех -  реално число в интервала [2.00...6.00]
  3. Минимална работна заплата - реално число в интервала [0.00..1000.00]

Изход

  • Ако ученикът няма право да получава стипендия, се извежда:
  • You cannot get a scholarship!"
  • Ако ученикът има право да получава социална стипендия и тя е по-висока от стипендията за отличен успех:
    "You get a Social scholarship {стойност на стипендия} BGN"
  • Ако ученикът има право да получава стипендия за отличен успех и тя е по-висока или равна по стойност на социалната стипендия за него:
  • "You get a scholarship for excellent results {стойност на стипендията} 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  лв. → ученикът ще получава социална стипендия.

 

 

0
DennisKostadinov avatar DennisKostadinov 15 Точки

В първият if не трябва да имаш || incomeBGN >= minimalSalary . Сега ако някой има 6,00 и високи приходи пак не получава стипедния, защото е в else не стига до проверката за отличен успех. Тук може да видиш решение, в което освен ако човек не отговаря на условията, дадена стипендия е 0 по default. Двете стипендии се сравняват накрая и ако и двете са различни от 0, се гледа коя е по-висока и се изписва съответно съобщение.

В оригиналния код грешката ти пак е това, че стипендията за успех се влияе от приходите, както и това, че нямаш правилното форматиране на изхода.

0
27/01/2019 10:08:12
Vardanss avatar Vardanss 0 Точки

Благодаря. Размених им местата и даде 93 точки, значи някъде има още една грешка (при тест 14, без да дава подробности).

0