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

04. Game Number Wars - EXAM 9 и 10 мarch 2019

Здравейте колеги,

може ли малко помощ за задача от изпит през 2019. Логиката ми мисля е вярна, но имам някъде грешкаи не мога да разбера къде точно е . 

На последният изход имам грешка .

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

https://judge.softuni.bg/Contests/Practice/Index/1538#6

https://pastebin.com/XYrAiRhH

Може ли да ми помогнете ?

Благодаря предварително :)

Тагове:
0
Programming Basics
nickwork avatar nickwork 368 Точки
Best Answer

Грешките бяха :

1. Не прекъсваш програмата когато имаме Number wars (Освен при "Number wars", играта може да приключи и при команда "End of game")

2. При Number wars не добавяме допълнително точки към крайният резултат, а само определяме победителя.

3. Може би основното - при Number wars е напълно вероятно да имаме няколко подред последователни еднакви карти, именно заради това е добре това да се вкара в цикъл и да се върти докато имаме различни стойности (няма гаранция, че още първият път ще бъдат различни и играта ще приключи).

 

using System;

namespace Game_Number_Wars
{
    class Program
    {
        static void Main(string[] args)
        {
            string gamer1 = Console.ReadLine();//ОТ КОНЗОЛАТА 
            string gamer2 = Console.ReadLine();//

            int totalGamer1 = 0;
            int totalGamer2 = 0;

            string command = Console.ReadLine();//команда се въвежда от конзолата

            while (command != "End of game")
            {
                int card1 = int.Parse(command);// вътре в цикъла . като започва с команда
                int card2 = int.Parse(Console.ReadLine());
                if (card1 > card2)//първия е победител
                {
                    totalGamer1 += card1 - card2;
                }
                else if (card2 > card1)
                {
                    totalGamer2 += card2 - card1;
                }
                else//булевия израз става true  ,заради команда number wars
                {
                    while (true)
                    {
                        card1 = int.Parse(Console.ReadLine());
                        card2 = int.Parse(Console.ReadLine());

                        if (card1 > card2)
                        {

                            // card1 = card1 - card2;
                            //totalGamer1 = card1;
                            Console.WriteLine($"Number wars!");
                            Console.WriteLine($"{gamer1} is winner with {totalGamer1} points");
                            return;
                        }
                        else
                        {

                            //card2 = card2 - card1;
                            //totalGamer2 = card2;
                            Console.WriteLine($"Number wars!");
                            Console.WriteLine($"{gamer2} is winner with {totalGamer2} points");
                            return;
                        }
                    }
                }

                command = Console.ReadLine();
            }

            if (command == "End of game")
            {
                Console.WriteLine($"{gamer1} has {totalGamer1} points");
                Console.WriteLine($"{gamer2} has {totalGamer2} points");
            }
        }
    }
}

0
24/05/2020 10:51:49
nadejda91iv avatar nadejda91iv 7 Точки

Много благодаря за изчерпателния отговор.:)

0