Професионална програма
Loading...
+ Нов въпрос
Daniel111 avatar Daniel111 12 Точки

Някой може ли да ме насочи къде бъркам в кода.

Учениците могат да кандидатстват за социална стипендия или за стипендия за отличен успех. Изискване за социална стипендия - доход на член от семейството по-малък от минималната работна заплата и успех над 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"
  • Ако ученикът има право да получава и двата типа стипендии, ще получи по-голямата по сума, а ако са равни ще получи тази за отличен успех.

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

 

 

проблем със задачата scholarship   докарвам я  до 50/100 .

#include <iostream>
#include <tgmath.h>
using namespace std;


int main () {


    double budget;
    cin >> budget;
    double grades;
    cin >> grades;
    double minimalbudget;
    cin >> minimalbudget;
    double socialscholarship = 0.35 * minimalbudget;
    double schoolmoney = grades * 25;

 

    if (grades < 5.50 && budget > minimalbudget ) {
        cout << "You cannot get a scholarship!" << endl;
        }else if (budget < minimalbudget && grades > 4.50) {
        cout << "You get a Social scholarship " << socialscholarship << " BGN" << endl;
        }else if (grades > 5.50) {
        cout << "You get a scholarship for excellent results" << schoolmoney <<  " BGN" << endl;
        }else if (socialscholarship > schoolmoney) {
        cout << "You get a Social scholarship " << socialscholarship << " BGN" << endl;
        }else if (schoolmoney > socialscholarship){
        cout << "You get a scholarship for excellent results" << schoolmoney <<  " BGN" << endl;

        }

 

 

 

}

 

 

Тагове:
0
Programming Fundamentals 18/06/2019 22:00:42
krum_43 avatar krum_43 411 Точки

Не виждам никъде да закръгляваш резултата до по-малкото цяло число.

В C# командата е MathFloor(мисля че и в C++ е така).

Освен това подхода ти е малко хаотичен и не съм сигурен,че обхваща всички кейсове.

Ето ти едно примерно решение на C#:
 

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

namespace Solarchip
{
    class Program
    {
        static void Main(string[] args)
        {
            double dohod = double.Parse(Console.ReadLine());
            double grade = double.Parse(Console.ReadLine());
            double mindohod= double.Parse(Console.ReadLine());
            double socialscholarship = 0.35 * mindohod;
            double schoolmoney = grade * 25;                            
            if (grade<=4.50)
            {
                Console.WriteLine("You cannot get a scholarship!");
            }
            if((grade>4.50)&&(grade<5.50))
            {
                if(dohod<mindohod)
                {
                    Console.WriteLine("You get a Social scholarship {MathFloor(socialscholarship)} BGN");
                }
                else
                {
                    Console.WriteLine("You cannot get a scholarship!");
                }
            }
            if(grade>5.50)
            {
                if (dohod < mindohod)
                {
                    if (schoolmoney >= socialscholarship)
                    {
                        Console.WriteLine($"You get a scholarship for excellent results {MathFloor(schoolmoney)} BGN");
                    }
                    else
                    {
                        Console.WriteLine("You get a Social scholarship {MathFloor(socialscholarship)} BGN");
                    }
                    
                }
                    
            }
        }
    }
}
 

0
Daniel111 avatar Daniel111 12 Точки

Здравей с твоето решение изкарах 62/100 и успях да го добутам до 68/100 , но в judge не ми дава къде бъркам а двата inputa в docks file-a ми ги извежда правилно

ето го и кода

 

#include <iostream>
#include <tgmath.h>
using namespace std;


int main () {


    double budget;
    double grades;
    double minimalbudget;
    cin >> budget >> grades >> minimalbudget;
    double socialscholarship = 0.35 * minimalbudget;
    double schoolmoney = grades * 25;

        cout .setf(ios::fixed);
        cout.precision(0);

    if (grades <= 4.50) {
      cout << "You cannot get a scholarship!" << endl;
    }
    if ((grades > 4.50) && (grades < 5.50)) {

        if (budget < minimalbudget) {
            cout << "You get a Social scholarship "<< floor(socialscholarship) << " BGN" << endl;

        }else {
        cout << "You cannot get a scholarship!" << endl;
        }

    }
    if (grades > 5.50) {

        if (budget < minimalbudget) {

            if (schoolmoney > socialscholarship){

              cout << "You get a Social scholarship "  << floor(schoolmoney) <<  " BGN" << endl;

            }else if (schoolmoney < socialscholarship) {
            cout << "You get a Social scholarship "  << floor(socialscholarship) <<  " BGN" << endl;
            }
        }

 

    }

 

 

 

}

 

 

1
krum_43 avatar krum_43 411 Точки

Ами може би при закръгляването.

 cout .setf(ios::fixed);
        cout.precision(0);

Тук не ми е много ясно какво правиш.Моят код също има малки грешки,но след като го коригирах и пуснах няколко теста локално  работеше правилно.Дай линк към judja да пробвам дали ще мине.Ето кода след корекциите:

https://pastebin.com/iFWrK8Ac

 

0
Daniel111 avatar Daniel111 12 Точки

Извинявай за забавянето ето за judge https://judge.softuni.bg/Contests/Compete/Index/1161#0

0