Изпит по "Основи на програмирането" – 28 и 29 март 2020
Loading...
+ Нов въпрос
inaivanova1990 avatar inaivanova1990 2 Точки

Задача 6. Коледен турнир

Здравейте, някой може ли да помогне с тази задача. Моето решение ми дава само 50 точки в judge.

https://pastebin.com/2J4Yt7T1

Изпит по "Основи на програмирането" – 28 и 29 март 2020

 

Задача 6. Коледен турнир

Напишете програма, която проследява представянето на вашия отбор на благотворителен коледен турнир.  Всеки ден получавате имена на игри до команда "Finish". Със спечелването на всяка една игра печелите по 20лв. за благотворителност. Трябва да изчислите колко пари сте спечелили на края на деня. Ако имате повече спечелени игри, отколкото загубени – вие сте победители този ден и увеличавате парите от него с 10%. При приключване на турнира ако през повечето дни сте били победители печелите турнира и увеличавате всичките спечелени пари с 20%.

Никога няма да имате равен брой спечелени и загубени игри.

Вход

Първоначално от конзолата се прочита броя дни на турнира – цяло число в интервала [1… 20]

До получаване на командата "Finish" се чете:

  • Спорт  – текст

За всеки спорт се прочита:

  • Резултат  – текст с възможности: "win" или "lose"

Изход

Накрая се отпечатва един ред:

  • Ако сте спечелили турнира:

     "You won the tournament! Total raised money: {спечелените пари}"

  • Ако сте загубили на турнира:

"You lost the tournament! Total raised money: {спечелените пари}"

Парите да бъдат форматирани до втората цифра след десетичния знак.

Примерен вход и изход

Вход

Изход

Обяснения

2

volleyball

win

football

lose

basketball

win

Finish

golf

win

tennis

win

badminton

win

Finish

You won the tournament! Total raised money: 132.00

Турнирът е 2 дена.

Първият ден:

Играем волейбол и печелим -> 20лв.

Играем футбол и губим -> 0лв.

Играем баскетбол и печелим -> 20лв.

Получаваме команда Finish и игрите за деня приключват. Спечелените пари 20 + 0 + 20 = 40лв. Имаме повече спечелени игри, отколкото загубени съответно увеличаваме парите от деня с 10% -> 44лв.

Втори ден:

Играем голф и печелим -> 20лв.

Играем тенис и печелим -> 20лв.

Играем бадминтон и печелим -> 20лв.

Получаваме команда Finish и игрите за деня приключват. Спечелените пари 20 + 20 + 20 = 60лв. Имаме само спечелени игри съответно увеличаваме парите от деня с 10% -> 66лв.

Спечелените пари от двата дена: 44 + 66 = 110лв.

Тъй като имаме повече победи, отколкото загуби, печелим турнира и увеличаваме парите с 20% -> 132лв.

3

darts

lose

handball

lose

judo

win

Finish

snooker

lose

swimming

lose

squash

lose

table tennis

win

Finish

volleyball

win

basketball

win

Finish

You lost the tournament! Total raised money: 84.00

 

 

Тагове:
0
Programming Basics
Axiomatik avatar Axiomatik 540 Точки

Best,

 

function solve(input) {

    let n = Number(input.shift());
    // let sport = input[1];
    // let result = input[2];
    // let money = 0;
    // let index = 1;
    
    let dayWin = 0;
    let dayLose = 0;
    let total = 0;
    
    for (let i = 1; i <= n; i++) {
        let currentLine = input.shift();
        let currentMoney = 0;
        let win = 0;
        let lose = 0;
        // while (index < input.length) {
        while (currentLine !== 'Finish') {
            sport = currentLine;
            result = input.shift();

            if (result === "win") {
                currentMoney += 20;
                win++;

            } else if (result === "lose") {
                lose++;
            }

            // index++;

            currentLine = input.shift();
        }
        if (win > lose) {
            total += currentMoney * 1.10;
            // total += money;
            dayWin++;
        } else {
            total += currentMoney;
            dayLose++;
        }
    }

    if (dayWin > dayLose) {
        // total += total * 0.2;
        total *= 1.2;
        console.log("You won the tournament! Total raised money: " + total.toFixed(2));
    } else {
        console.log("You lost the tournament! Total raised money: " + total.toFixed(2));
    }
}

 

0
LyuboslavL avatar LyuboslavL 1 Точки

function christmasTournament(input){
    let days = Number(input[0]);
    let money = 0;
    let dailyMoney = 0; 
    let gameWon = 0;
    let gameLost = 0; 
    let daysWon = 0;
    let daysLost = 0; 
    
    for (let i = 1; i < input.length; i++){
        if (input[i] === "win"){
            dailyMoney += 20;
            gameWon++;
        } else if (input[i] === "lose"){
            gameLost++; 
        } 

        if (input[i] === "Finish"){
            if (gameWon > gameLost){
                daysWon++;
                dailyMoney = dailyMoney + dailyMoney * 0.1;
                money += dailyMoney;
                dailyMoney = 0; 
                gameWon = 0;
                gameLost = 0;
            } else {
                daysLost++;
                money += dailyMoney;
                dailyMoney = 0;
                gameWon = 0;
                gameLost = 0;
            } 
        }
    }

    if (daysWon > daysLost){
        let bonus = money + money * 0.2;
        console.log(`You won the tournament! Total raised money: ${bonus.toFixed(2)}`);
    } else {
        console.log(`You lost the tournament! Total raised money: ${money.toFixed(2)}`);
    }
}

0