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

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 268 Точки

Ето едно по-подровно решение на 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