Loading...
SvetoslavPetsev avatar SvetoslavPetsev 100 Точки

Привет,

Моля, изпратете си кода, за да го разгледам и видя къде е възможно да има пропуск!

Ще споделя решение, след като е достъпен бутон Practice.

Иначе задачата я решавам с вложени цикли :

1. създаваш 3 промнливи: брояч на спечелени дни; брояч загубени дни; тотална печалба;

2. въртиш for цикъл за дните на състезанието;

2.1. създаваш в цикъла, 3 променливи: за дневните спечелени игри; за дневните загубени игри и дневна печалба /за да се зануляват всеки ден/;

2.2. въртиш вътрешен while цикъл до входен string "Finish"

- при "win / lose" увеличаваш спечелените игри и добавяш в дневната печалба 20лв./ при загуба само увеличаваш загубените игри.

- при команда Finish, излизаш от второстепения цикъл /while/ т.е. приключва текущия ден;

2.3  след него правиш равносметка за деня,

- ако е с повече победи, увеличаваш дневната печалба с 10% и увеличваш броя на спечелените дни;

- ако не е, увелеичваш броя на загубените дни;

2.4. след това добавяш дневната печалба към тоталната печалба.... и въртиш за следващия ден;

3. След всички дни /като прикючи for цикъла/ сравнваш броя на спечелените и броя на загубените дни... на там мисля е ясно, че стана малко дълго :).

Успех!

----

Заповядай кода, който стъпва на обясненията по-горе и дава 100/100:

https://pastebin.com/yN4qJZx7

Успех!

0
05/04/2020 10:43:30
NikiKa avatar NikiKa 15 Точки

import java.util.Scanner;

public class TournamentofChristmas {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int daysOfTournament = Integer.parseInt(scanner.nextLine());
        double charity = 0;
        double dayCharity=0;
        int win = 0;
        int loose = 0;
        int dayWin = 0;
        int dayLoose = 0;

        for (int i = 1; i <= daysOfTournament; i++) {
            String sport = scanner.nextLine();
            while (!sport.equals("Finish")) {
                String result = scanner.nextLine();
                switch (result) {
                    case "win":
                        win++;
                        dayCharity += 20;
                        break;
                    case "lose":
                        loose++;
                        break;
                }
                sport = scanner.nextLine();
            }
            if (win > loose) {
                dayCharity *= 1.10;
                dayWin++;
            } else {
                dayLoose++;
            }
            win = 0;
            loose = 0;
            charity+=dayCharity;
            dayCharity=0;
        }
        if (dayWin > dayLoose) {
            charity *= 1.20;
        }
        if (dayWin > dayLoose) {
            System.out.printf("You won the tournament! Total raised money: %.2f", charity);
        } else {
            System.out.printf("You lost the tournament! Total raised money: %.2f", charity);
        }
    }
}
 

0
hyparh avatar hyparh 3 Точки

Едно решение и от мен, без for цикъл:

https://pastebin.com/g3isFp5e

0
Rosi_Tri avatar Rosi_Tri 3 Точки

C#

https://pastebin.com/SfVarPVn

0
fakoneto avatar fakoneto 2 Точки
Здравейте,
Ще се радвам ако някой провери защо този код на Java ми дава 90/100 на задачата в джъдж.
Не мога да видя при кой вход ми гърми - дава ми само нулевите.
Благодаря предварително.



package Exam;

import java.util.Scanner;

public class TournamentOfChristmas {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        int days = Integer.parseInt(scanner.nextLine());
        int totalWins = 0;
        int totalLost = 0;

        double totalSum = 0;

        for (int i = 0; i < days; i++) {
            String typeOfSport = scanner.nextLine();

            int winCount = 0;
            int loseCount = 0;
            double daylySum = 0;
            double plus = 0;
            while (!typeOfSport.equals("Finish")) {
                String winOrLost = scanner.nextLine();
                switch (winOrLost) {
                    case "win":

                        daylySum += 20;
                        winCount++;
                        totalWins++;
                        break;
                    case "lose":
                        loseCount++;
                        totalLost++;
                        break;
                }
                if (winCount > loseCount) {
                    plus = (daylySum * 0.1);
                }


                typeOfSport = scanner.nextLine();
            }
            totalSum += (daylySum + plus);


        }
        if (totalWins > totalLost) {
            totalSum = totalSum + (totalSum * 0.20);
            System.out.printf("You won the tournament! Total raised money: %.2f", totalSum);
        } else {
            System.out.printf("You lost the tournament! Total raised money: %.2f", totalSum);
        }

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