Loading...
Stani82 avatar Stani82 13 Точки

Scholarship/Стипендии

Здравейте, 

Имам проблем с решаването на задачата. За решаването й ползвам Javascript, защото съм записан в такъв курс, а тук няма подраздел за джаваскриптъри.  При събмитване judge не ми дава повече от 68 точки, въпреки, че я копирам дословно от решение на C# (разбира се, с необходимите синтактични корекции), което носи 100 точки. Ето го моят вариант на JS:

function scolarship(input) {

let income = Number(input.shift());

let avgGrade = Number(input.shift());

let minWage = Number(input.shift());

 

let social = 0;

let exccelent = 0;

if (income < minWage) {

   if (avgGrade > 4.5) {

   social = minWage * 0.35;

   }

}

if (avgGrade>= 5.5) {

exccelent = avgGrade * 25;

}

if (social > exccelent ) {

console.log(`You get a Social scholarship ${Math.floor(social)} BGN`)

} else if (exccelent > social) {

console.log(`You get a scholarship for excellent results ${Math.floor(excellent)} BGN`)

} else {console.log(`You cannot get a scholarship!`)}

}

 

Надявам се някой да помогне. Благодаря в аванс!

Тагове:
0
Programming Basics with PHP
marina.kolova avatar marina.kolova 34 Точки

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

 

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

1) Четене на входните данни.

2) Изчисляване на стипендиите. Без значение дали ще взима социална стипендия, стипендия за успех или никакви, си е задедено, че социалната е 0.35 * минималната заплата, а стипендията за успех е успехът *25. Това спокойно можеш да си го сложиш в две променливи - социална стипендия и стипендия за успех. И после да ги използваш за сравняване или печатане на конзолата.

3) Проверка за успех по-малък или равен на 4.50 - принтира се, че няма стипендия.

4) При успех по-голям от 4.50 - вложени проверки за:

4.1.)  доход по-голям или равен на минималната заплата и успех под 5.50 - няма стипендия.

4.2.) доход по-голям или равен на минималната заплата и успех по-голям или равен на 5.50 - стипендия за успех.

4.3.) доход по-малък от минималната заплата и успех под 5.50 - социална стипендия.

4.4.) доход по-малък от минималната заплата и успех по-голям или равен на 5.50 - вложена проверка за това коя стипендия е по-голяма и принтиране на съответния резултат.

Това покрива всички случаи.

 

И пробвай с Math.Truncate. Math.Floor май не вършеше работа при тази задача.

 

EDIT: Ето го и като код. C# е, но ще се ориентираш: https://pastebin.com/fbGPHArh

0
14/02/2019 21:56:57
chrisi2712 avatar chrisi2712 272 Точки

Ето едно по-подровно решение на C#,  в което случеите са описани по-подробно и четливо

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Scholarship
{
    class Program
    {
        static void Main(string[] args)
        {
            double income = double.Parse(Console.ReadLine());
            double grades = double.Parse(Console.ReadLine());
            double minSalary = double.Parse(Console.ReadLine());

            double socialScholarship = 0.35 * minSalary;
            double gradesScholarship = 25 * grades;

            if (income<=minSalary && grades>=5.50)
            {
                if (socialScholarship>gradesScholarship)
                {
                    Console.WriteLine($"You get a Social scholarship {Math.Floor(socialScholarship)} BGN");
                }
                else
                {
                    Console.WriteLine($"You get a scholarship for excellent results {Math.Floor(gradesScholarship)} BGN");
                }
            }
            else if (income>minSalary&&grades>=5.50)
            {
                Console.WriteLine($"You get a scholarship for excellent results {Math.Floor(gradesScholarship)} BGN");
            }
            else if (income<=minSalary && grades>=4.50)
            {
                Console.WriteLine($"You get a Social scholarship {Math.Floor(socialScholarship)} BGN");
            }
            else if (income<=minSalary&&grades<4.50)
            {
                Console.WriteLine("You cannot get a scholarship!");
            }
            else if (income>minSalary&&grades<5.50)
            {
                Console.WriteLine("You cannot get a scholarship!");
            }

        }
    }
}

 

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