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

Стипендии в C# - Март 2019

Здравейте,

след известни пробвания в judje не успях да получа 100/100, а само 81/100.

Моля, някой за съвет!

ето ми го и кода:

using System;

class Scholarship
{
    static void Main()
    {
        double income = double.Parse(Console.ReadLine());
        double averageGrade = double.Parse(Console.ReadLine());
        double minSalary = double.Parse(Console.ReadLine());
        double social = minSalary * 0.35;
        social = Math.Floor(social);
        double normal = averageGrade * 25;
        normal = Math.Floor(normal);

        if (income > minSalary && averageGrade < 5.50)
        {
            Console.WriteLine("You cannot get a scholarship!");
        }
        else if (income <= minSalary && averageGrade >= 4.50 && averageGrade < 5.50)
        {
            Console.WriteLine("You get a Social scholarship {0} BGN", social);
        }
        else if (income <= minSalary && averageGrade >= 5.50)
        {
            Console.WriteLine("You get a scholarship for excellent results {0} BGN", normal);
        }
        else if (social > normal)
        {
            Console.WriteLine("You get a Social scholarship {0} BGN", social);
        }
        else if (social <= normal)
        {
            Console.WriteLine("You get a scholarship for excellent results {0} BGN", normal);
        }
    }
}

 

Tspetrova avatar Tspetrova 126 Точки

Логиката ти е обърната, първо винаги се почва от условието, което изисква най-много проверки - социална стипендия и послепенно проверяваш и другите условия с else if, като последно ти остава случая да няма стипендия с else

Подсказано е в самото условие на задачата последователността :-)

Пращам ти решение на Java, за сравнение

https://pastebin.com/p4DR2YRc

0
Vladimir_Dodnikov avatar Vladimir_Dodnikov 2 Точки

Благодаря ви за отговора.

По-късно ще го пробвам!

0
Iv_Konov avatar Iv_Konov 357 Точки

Здравей, Vladimir_Dodnikov,

 

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

Този код вероятно не е най-добрият, но някак ми тече "свободно", без да има сложни сравнения (двете стипендии са разделени), подобни на твоето решение с дълги редове...

 

===============================

using System;

class Scholarship
{
    static void Main()
    {
        double income = double.Parse(Console.ReadLine());
        double averageGrade = double.Parse(Console.ReadLine());
        double minSalary = double.Parse(Console.ReadLine());

        double normal = 0.0; // сметките ги остави за финала!
        double social = 0.0;
        bool yesScolarship = false; // добавих

        if (averageGrade > 4.5 && income < minSalary) // проверяваме дали има право за социална стипендия
        {
            social = minSalary * 0.35;
            yesScolarship = true;
        }

        if (averageGrade >= 5.5) // // проверяваме дали има право за стипендия по успех
        {
            normal = averageGrade * 25;
            yesScolarship = true;
        }

        if (yesScolarship == false)
        {
            Console.WriteLine("You cannot get a scholarship!");
        }
        else if (normal >= social) // сравняваме сумите и... готово
        {
            Console.WriteLine($"You get a scholarship for excellent results {Math.Floor(normal)} BGN");
        }
        else
        {
            Console.WriteLine($"You get a Social scholarship {Math.Floor(social)} BGN");
        }
    }
}

==================================

 

Поздрави,

Иван

0
Vladimir_Dodnikov avatar Vladimir_Dodnikov 2 Точки

Благодаря ви за отговора. Ще се опитам да разсъждавам и по този начин, но явно си иска практика, :)

0