Loading...
MartinBG avatar MartinBG 4803 Точки

Кодът не покрива сценарий, при който студентът има отличен успех и доход над минималния.

Например при следния вход програмата няма да изведе резултат:

100
5.6
50

 

1
iopzzza avatar iopzzza 0 Точки

https://pastebin.com/YYutvZ7c , ето друг код . Нали трябва да има 5 възможни сценария ? Единия ако може и двете , но едната е по-висока , другия ако другата е по-висока. Третия , ако може само едната, Четвъртия , ако може само другата и  Петия ако не може нито една ? И аз така реших да ги направя, но максимума е 62/100 до , който съм стигал.

0
MartinBG avatar MartinBG 4803 Точки

 

@iopzzza

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

 

Ето един вариант, при който логическите проверки са изнесени в променливи, което от своя страна прави разклонения по-лесни за следване:

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        double incomeLeva = Double.parseDouble(scanner.nextLine());
        double averageGrade = Double.parseDouble(scanner.nextLine());
        double LowestSalary = Double.parseDouble(scanner.nextLine());
        double social = LowestSalary * 0.35;
        double grades = averageGrade * 25;

        boolean applicableForSocial = incomeLeva < LowestSalary && averageGrade > 4.5;
        boolean applicableForExcellent = averageGrade >= 5.5;
        boolean preferSocialScholarship = social > grades;

        if (applicableForSocial && applicableForExcellent) {
            if (preferSocialScholarship) {
                System.out.printf("You get a Social scholarship %.0f BGN", Math.floor(social));
            } else {
                System.out.printf("You get a scholarship for excellent results %.0f BGN", Math.floor(grades));
            }
        } else if (applicableForExcellent) {
            System.out.printf("You get a scholarship for excellent results %.0f BGN", Math.floor(grades));
        } else if (applicableForSocial) {
            System.out.printf("You get a Social scholarship %.0f BGN", Math.floor(social));
        } else {
            System.out.println("You cannot get a scholarship!");
        }
    }

 

Ето по-съкратен запис на горното, но е спорно дали е по-четим:

        boolean applicableForExcellent = averageGrade >= 5.5;
        boolean applicableForSocial = incomeLeva < lowestSalary && averageGrade > 4.5;
        boolean preferSocialScholarship = applicableForExcellent && applicableForSocial && social > grades;

        if ((applicableForSocial && !applicableForExcellent) || preferSocialScholarship) {
            System.out.printf("You get a Social scholarship %.0f BGN", Math.floor(social));
        } else if (applicableForExcellent) {
            System.out.printf("You get a scholarship for excellent results %.0f BGN", Math.floor(grades));
        } else {
            System.out.println("You cannot get a scholarship!");
        }

 

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