Ищете способ сократить мой код - PullRequest
0 голосов
/ 10 мая 2018

Это мой код:

    static void Main(string[] args)
    {


        Console.Write("How many tests would you like to do? 1 to 10: ");

        int tests = Convert.ToInt32(Console.ReadLine());
        Console.WriteLine();

    }

Может кто-нибудь помочь мне с моим кодом, пожалуйста?я понятия не имею, что я делаю

Спасибо

1 Ответ

0 голосов
/ 10 мая 2018

Создайте массив int[] counts = new int[13] и просто используйте counts[total]++;; в конце обведите его:

for(int i = 2 ; i <= 12 ; i++)
    // etc

(примечание: вы могли бы использовать массив из 11 элементов и постоянно обрабатывать двоих, но ... это, вероятно, того не стоит)


Что-то вроде:

static void Main()
{

    Console.WriteLine("Investigation 1");
    Console.WriteLine("===============");
    Console.WriteLine();
    Console.Write("How many sets of tests? 1 to 10: ");

    int sets = Convert.ToInt32(Console.ReadLine());
    Console.WriteLine();

    Random r = new Random();
    int[] counts = new int[13];

    for (int ctr = 0; ctr < 36 * sets; ctr++)
    {
        int a = r.Next(1, 7), b = r.Next(1, 7), total = a + b;
        Console.WriteLine($"Roll {(ctr + 1)}: {a} + {b} = {total}");
        counts[total]++;
    }

    Console.WriteLine("=======================");
    Console.WriteLine();
    Console.WriteLine("Total  Expected  Actual");
    Console.WriteLine("=====  ========  ======");

    for(int i = 2; i <= 12; i++)
    {
        var expected = sets * (6 - Math.Abs(7 - i));
        Console.WriteLine($"  {i}        {expected}        {counts[i]}");
    }
}

Для гистограммы:

var maxCount = counts.Max(); // needs "using System.Linq;" at the top
for (int i = 2; i <= 12; i++)
{
    var width = ((Console.WindowWidth - 10) * counts[i]) / maxCount; // make it proportional
    Console.WriteLine($"{i}\t{new string('*', width)}");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...