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

Задача Game Number Wars

Здравейте, 

Може ли някой да ми каже, защо нe минава тази задача (66%) ?

https://pastebin.com/z3ahQgWq

https://pastebin.com/1R7KS3QB

 

Условието

Задача 4. Игра на карти "Number wars"

"Numbers" е нова игра, която се играе с 36 карти (двойки, тройки, четворки, петици, шестици, седмици, осмици, деветки и десетки от всички 4 бои). Правилата на играта са следните:

  • Играе се от двама играчи, които започват с равен брой карти
  • На всяко раздаване всеки един от тях дава по 1 карта:
    • Ако картата на първия играч е с по-голяма стойност от картата на втория играч, първият получава точки, които са равни на разликата между картата на първия и картата на втория (например: първият дава тройка купа, а вторият двойка каро -> първият печели, защото 3 > 2 и точките, които печели, са 3 – 2 = 1).
    • Ако картата на втория играч е с по-голяма стойност от картата на първия играч, вторият получава точки, които са равни на разликата между картата на втория и картата на първия (например: вторият дава осмица пика, а първият шестица спатия -> вторият печели, защото 8 > 6 и точките, които печели, са 8 – 6 = 2).
    • Ако картите, които дават двамата, са с еднаква стойност, тогава се получава "Number wars" и всеки един от играчите трябва да даде по още една карта. Играчът, чиято карта е с по-голяма стойност, печели и играта приключва(В този случай, няма да има еднакви карти).
  • Освен при "Number wars", играта може да приключи и при команда "End of game". Тогава никой не печели и играта приключва.

Вход

Първоначално се четат два реда:

  • Име на първия играч - текст
  • Име на втория играч - текст

След това, до получаване на команда "End of game", се четат многократно по два реда:

  1. Карта, която дава първият играч- цяло число в интервала [2…9]
  2. Карта, която дава вторият играч -  цяло число в интервала [2…9]

При еднакви карти на двамата играчи се прочитат нови два реда (карта, която дава първият и карта, която дава вторият.)

Изход

При случая, в който има "Number wars ", да се отпечата:

  • "Number wars!"
  • "{име на победителя} is winner with {брой натрупани точки} points"

При команда "End of game" да се отпечатат два реда:

  • "{име на първия играч} has {брой натрупани точки за първия играч} points"
  • "{име на втория играч} has {брой натрупани точки за втория играч} points"

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

Вход

Изход

Обяснения

Desi

Niki

7

5

3

4

3

3

5

3

Number wars!

Desi is winner with 2 points

Играчите са Деси и Ники

Първо раздаване:

Деси дава седмица (7), Ники дава петица (5):

  • Деси печели раздаването, защото 7 > 5 Точките, които печели от това раздаване, са:
  • – 5 = 2 -> Точките на Деси стават 2

Второ раздаване:

Деси дава тройка (3), Ники дава четворка (4):

  • Ники печели раздаването, защото 4 > 3. Точките, които печели от това раздаване, са:
  • – 3 = 1 -> Точките на Ники стават 1

Трето раздаване:

Деси дава тройка (3) и  Ники дава тройка (3):

  • Отпечатваме Number wars!
  • Прочитаме нови две карти:

       Деси дава петица (5), Ники дава тройка (3):

       5 > 3 -> Деси печели играта

       Отпечатваме натрупаните точки (2)

Elena

Simeon

6

3

2

5

8

9

End of game

Elena has 3 points

Simeon has 4 points

Играчите са Елена и Симеон

Първо раздаване:

Елена дава шестица (6), Симеон дава тройка (3):

  • Елена печели раздаването, защото 6 > 3 Точките, които печели от това раздаване, са:
  • – 3 = 3 -> Точките на Елена стават 3

Второ раздаване:

Елена дава двойка (2), Симеон дава петица (5):

  • Симеон печели раздаването, защото 5 > 2. Точките, които печели от това раздаване, са:
  • – 2 = 3 -> Точките на Симеон стават 3

Трето раздаване:

Елена дава осмица (8), Симеон дава деветка (9):

  • Симеон печели раздаването, защото 9 > 8. Точките, които печели от това раздаване, са:
  • – 8 = 1 -> Точките на Симеон стават 4

Получаваме End of game  и принтираме точките и на двамата.

Aleks

Georgi

4

5

3

2

4

3

4

4

5

2

Number wars!

Aleks is winner with 2 points

 

 

Тагове:
0
Programming Basics
Yargi avatar Yargi 27 Точки

Try this as input and you will see whats going wrong.

 

Kris

Kros

4

4

5

5

3

2

1

1

6

6

If both player have same values more than one time both of your codes don't work like they should.

0
09/09/2020 23:42:20
SilviaSJ avatar SilviaSJ 3 Точки

това също дава 66%...

https://pastebin.com/RNgiBAX8

Може ли да се направи тази задача само с един цикъл?

0
Yargi avatar Yargi 27 Точки

Here is the solution without boolean flag,

https://pastebin.com/cGyrS9DW

if you want to do this with only one while-loop you have to do many if-else checks and also continue the while loop in case of number war.

In this case you would have to use a second boolean flag to exit the code after number wars.

0
11/09/2020 11:00:25
SilviaSJ avatar SilviaSJ 3 Точки

I removed the boolean flag, I still get 66%... I even changed my code slightly to match yours. No idea what else could I be missing. Oh well.

https://pastebin.com/BXBpKuuH

0
dZf1aeA-minion89 avatar dZf1aeA-minion89 9 Точки

Very useful sharing. you are a great author. I will definitely bookmark your blog and maybe come back someday Thanks for a great post. Please continue to uphold!

vex 3 online

-1
1