Loading...
Daniel111 avatar Daniel111 11 Точки

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

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

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

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

Здравей с твоето решение изкарах 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 756 Точки

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

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

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

https://pastebin.com/iFWrK8Ac

 

0
Daniel111 avatar Daniel111 11 Точки

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

0
DimiterGeorgiev avatar DimiterGeorgiev 0 Точки

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


int main () {


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

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

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

            }
    }
    }
 

0
DimiterGeorgiev avatar DimiterGeorgiev 0 Точки

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

 

0
RuNNeR4142 avatar RuNNeR4142 396 Точки

Не проверяваш оценка 5.50.

0
Daniel111 avatar Daniel111 11 Точки

Благодаря :)  за обяснението

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