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

задача Дартс

https://pastebin.com/Nhqv6z2D

Здравейте нещо се увлякох и се збози всичко, помощ?

using System;

namespace ConsoleApp3
{
    class Program
    {
        static void Main(string[] args)
        {

            string name = Console.ReadLine();
            int startPoints = 301;
            int goodShots = 0;
            int badShots = 0;
            while (startPoints != 0)
            {

               string shot = Console.ReadLine();

                if (shot == "Retire")
                {
                    Console.WriteLine($"{name} retired after {badShots} unsuccessful shots.");
                }

                int points = int.Parse(Console.ReadLine());

                if (shot == "Single")


                {
                    if (points <= startPoints && startPoints > 0)
                    {
                        startPoints -= points;
                        goodShots++;
                    }
                    else
                    { 
                        
                        badShots++;
                    }

                }


                if (shot == "Double")
                {
                    if (points <= startPoints && startPoints > 0)
                    {
                        startPoints -= points;
                        goodShots++;
                    }
                    else
                    {

                        badShots++;
                    }
                }

                if (shot == "Triple")
                {
                    if (points <= startPoints && startPoints > 0)
                    {
                        startPoints -= points;
                        goodShots++;
                    }
                    else
                    {

                        badShots++;
                    }
                }

                if (startPoints == 0)
                {
                    Console.WriteLine($"{name} won the leg with {goodShots} shots.");
                    break;
                }
                             

            }


        }
    }
}

Тагове:
0
Programming Basics with C#
MartinBG avatar MartinBG 3751 Точки

Решението има няколко дребни проблема:

  1. При Retire трябва да се прекъсне while цикъла:
                    if (shot == "Retire")
                    {
                        Console.WriteLine($"{name} retired after {badShots} unsuccessful shots.");
                        break; // fix
                    }


     

  2. При Double точките трябва да се удвоят:
     

                    if (shot == "Double")
                    {
                        points *= 2; // fix
                        // ...
                    }


     

  3. При Tripple точките трябва да се утроят:
     

                    if (shot == "Triple")
                    {
                        points *= 3; // the fix
                        // ...
                    }


     

Оправеното решение.

0
DStanev avatar DStanev 3 Точки

Благодаря! След работа седнах да пиша мързелашката и копи пейста не прощава, brake, го бях пропуснал, поне логиката е ок

1
DStanev avatar DStanev 3 Точки

Вашата задача е да напишете програма, която да изчислява, дали даден играч е успял да спечели лег. (Лег се нарича единична игра на дартс) 

Първоначално играчът започва с 301 точки. Играчът хвърля стрелата върху таблото, като за всяко улучено поле, той получава определен брой точки. Всяко поле има по три сектора: единичен (Single) сектор от който се взимат броят точки от полето. Двоен (Double), от него се взимат удвоените точки от полето и троен (Triple) сектор, точките от който са умножени по 3. 

Получените точки от всеки изстрел се изваждат от началните точки, до достигане на 0. 

Забележка: При изстрел, даващ повече точки от наличните, той се зачита за неуспешен и играчът трябва да хвърля отново, докато не уцели точки равни на оставащите или по-малки, такъв удар се счита за успешен. 

Пример: При налични точки 100, удар даващ повече от 100 точки, неуспешен 

При налични точки 100, удар даващ по -малко или равни на 100 точки, успешен 

Вход  

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

• Името на играча - текст 

След това до получаване на команда " Retire" се четат многократно по два реда: 

1. Поле – текст ("Single", "Double" или "Triple") 

2. Точки – цяло число в интервала [0… 100] 

Изход 

Играта приключва при въвеждане на команда " Retire" или при изравняване на началните 301 точки към 0. На конзолата трябва да се напечата един ред: 

• Ако играчът е спечелил лега: 

o "{името на играча} won the leg with {успешните изстрели} shots." 

• Ако играчът се е отказал от играта: 

o "{името на играча} retired after {неуспешни изстрели} unsuccessful shots." 

0