Loading...
gim13 avatar gim13 8 Точки

Задача 9 от упражнението за условни конструкции на С#

Здравейте,моля да ми подскажете какъв е проблема и къде. С всички стойности който въвеждам работи,но
 "съдията" ми дава 75 точки( на 4 от проверките "гърми" ). 
 
 С линк: https://pastebin.com/zLrPR8Wt

 или направо кода:

using System;

namespace stipendia
{
    class Program
    {
        static void Main(string[] args)
        {
            
                double dohod = double.Parse(Console.ReadLine());
                double uspeh = double.Parse(Console.ReadLine());
                double minZapl = double.Parse(Console.ReadLine());

                double socStipend = minZapl * 0.35;
                double otlichStipend = uspeh * 25;

                if (uspeh < 5.5 && dohod >= minZapl)
                {
                    Console.WriteLine("You cannot get a scholarship!");
                }

                else if (uspeh >= 5.5 && dohod >= minZapl)
                {
                    Console.WriteLine($"You get a scholarship for excellent results {otlichStipend} BGN");
                }
                else if (dohod < minZapl && uspeh > 4.5 && uspeh < 5.5)
                {
                    Console.WriteLine($"You get a Social scholarship {socStipend} BGN");
                }
                else if (dohod < minZapl && uspeh >= 5.5)
                {
                    if (otlichStipend >= socStipend)
                    {
                        Console.WriteLine($"You get a scholarship for excellent results {otlichStipend} BGN");
                    }
                    else
                    {
                        Console.WriteLine($"You get a Social scholarship {socStipend} BGN");
                    }
                }
                else
                {
                    Console.WriteLine("You cannot get a scholarship!");
                }
        }
    }
}
0
Programming Basics with C# 19/02/2019 00:45:16
MitakaBGpro avatar MitakaBGpro 14 Точки

Може ли линк към Judge ? 

0
gim13 avatar gim13 8 Точки

https://judge.softuni.bg/Contests/Compete/Index/1161#8

0
Iv_Konov avatar Iv_Konov 383 Точки

Добро утро, gim13,

 

По мое мнение, трябва да се опростят разсъжденията на отделни if конструкции... Целта е по-лесно разбиране, а и да отделим като два независими случая - 1. социална  и 2. по успех.  

if-else да ползваме само при сравнението на сумите на двете стипендии.

 

using System;

namespace stipendia
{
    class Program
    {
        static void Main(string[] args)
        {

            double dohod = double.Parse(Console.ReadLine());
            double uspeh = double.Parse(Console.ReadLine());
            double minZapl = double.Parse(Console.ReadLine());

            double socStipend = 0;
            double otlichStipend = 0;
            bool yesScolarship = false; // добавено


            if (uspeh >= 4.5 && dohod < minZapl)
            {
                socStipend = minZapl * 0.35;
                yesScolarship = true;
            }

            if (uspeh >= 5.5)
            {
                otlichStipend = uspeh * 25;
                yesScolarship = true;
            }

            if (yesScolarship == false)
            {
                Console.WriteLine("You cannot get a scholarship!");
                return; // добавям, за да не проверява сумите на двете стипендиите (по подразбиране и двете са "0", т.е. включват се в " =" на долната проверка)
            }
           
            if (otlichStipend >= socStipend)
                {
                    Console.WriteLine($"You get a scholarship for excellent results {Math.Floor(otlichStipend)} BGN"); // Math.Floor - добавено
            }
            else
            {
                Console.WriteLine($"You get a Social scholarship {Math.Floor(socStipend)} BGN"); // Math.Floor - добавено
            }
        }
    }
}

 

Поздрави,

Иван

0
19/02/2019 09:10:21
gim13 avatar gim13 8 Точки

Здравей,Iv_Konov.

Благодаря за решението.За мен е важно освен правилното решение ,да разбера и каква

е грешката в моя код,защо не работи на 100%.Ако може да ми посочиш проблема или да

дадеш  стойности при който програмата дава грешка ще съм ти още по-благодарен.

 

Поздрави,

Генади

0
gim13 avatar gim13 8 Точки

" Резултатът се закръгля до по-малкото цяло число. "

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

 

Блогодаря за вниманието,

Генади

0
Iv_Konov avatar Iv_Konov 383 Точки

Здравей, Генади,

 

Имаш основание да си търсиш грешката...
 
Аз преправих програмата ти повечко (пробвах с леки корекции, но не успях). Основанието ми беше - конструкцията if-else-if e много задължаваща..., и според мен трябва да се ползва при зависими/свръзани параметри, а двете стипендии не са обвързани (освен на финала, ако и двете стипендии са възможни).
Възможно е Съдията да вижда нещо... гадая, нека и други да си кажат мнението.

Да, видими грешки има, но лекото преправяне не беше достатъчно да мине теста 100/100... и затова ти премахнах if-else-if...-else конструкцията с директни if-ове.

Тук
else if (dohod < minZapl && uspeh > 4.5 && uspeh < 5.5) // трябва да има равенство - uspeh >= 4.5
                {
                    Console.WriteLine($"You get a Social scholarship {socStipend} BGN");
                }

и на финала - ползването на Math.Floor при резултата...

 

Поздрави,
Иван

0
19/02/2019 12:32:58
gim13 avatar gim13 8 Точки

Привет,отново.

Само с добавянето на   Math.Floor при резултата.. ,теста мина  100/100.

 линк:https://judge.softuni.bg/Contests/Submissions/View/10264227

 

 С благодарности,

Генади

 

0
19/02/2019 13:35:33
Stukz avatar Stukz 3 Точки

Здравейте понеже мен също доста ме измъчи тази задача да попитам как с това решение работещо при всички възможни случаи в Judge ми дава 68/100  https://pastebin.com/FjkpJVPB

0
Iv_Konov avatar Iv_Konov 383 Точки

Здравей, Stukz, 

моля те, махни излишното, маркирано в жълто (само Math.Floor ти е нужно) - на две места го имаш:

{Math.Floor(otilichenStip):f2}

Поздрави,

Иван

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