Exemple #1
0
        static void Calculate(CoinFlipResults coinFlipResults)
        {
            ulong all = (ulong)coinFlipResults.Heads + (ulong)coinFlipResults.Tails;

            Console.ForegroundColor = ConsoleColor.Yellow;
            Console.WriteLine($"All: {all}");
            decimal tailsPercentage = Convert.ToDecimal(coinFlipResults.Tails) /
                                      Convert.ToDecimal(all);
            decimal headsPercentage = Convert.ToDecimal(coinFlipResults.Heads) /
                                      Convert.ToDecimal(all);

            Console.WriteLine($"Tails percentage: {tailsPercentage}\n" +
                              $"Heads percentage: {headsPercentage}");
        }
Exemple #2
0
        static void SaveResultsToFile(CoinFlipResults result)
        {
            try
            {
                FileStream stream = File.Create(Path.Combine("Results", $"{DateTime.Now}.json"));
                string     json   = JsonSerializer.Serialize(result);
                using (StreamWriter writer = new StreamWriter(stream))
                {
                    writer.Write(json);
                }
                stream.Close();

                Console.ForegroundColor = ConsoleColor.Green;
                Console.WriteLine("\nSaving done!");
                Console.ForegroundColor = ConsoleColor.White;
            }
            catch (Exception) {
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine("Error! Result isn't saved!");
                Console.ForegroundColor = ConsoleColor.White;
            }
        }
Exemple #3
0
        static void LoadAndCalculate()
        {
            Console.WriteLine("Your results files:");
            try{
                string[] files = Directory.GetFiles("Results");
                for (int i = 0; i < files.Length; i++)
                {
                    Console.WriteLine($"{i + 1}. {files[i]}");
                }
                int    fileNumber = GetFileNumberFromUser(files);
                string json       = String.Empty;
                using (StreamReader reader = new StreamReader(files[fileNumber - 1])){
                    json = reader.ReadToEnd();
                }

                CoinFlipResults result = JsonSerializer.Deserialize <CoinFlipResults>(json);
                Calculate(result);
            }
            catch (Exception) {
                Console.WriteLine("Error!");
                LoadAndCalculate();
            }
        }
Exemple #4
0
        static void GetDataFromUserAndStartFlipping()
        {
            Console.ForegroundColor = ConsoleColor.White;
            Console.Write("Number of flips: ");
            string numberOfFlipsString = Console.ReadLine();

            ulong numberOfFlips = 0;
            bool  isAsync       = false;

            bool[]          results         = null;
            CoinFlipResults coinFlipResults = null;

            if (UInt64.TryParse(numberOfFlipsString, out numberOfFlips))
            {
                bool   result = false;
                Random random = new Random();
                if (numberOfFlips > 1)
                {
                    GetVariantOfFlippingFromUser(ref isAsync);
                    Console.WriteLine($"Asynchronous: {isAsync}");
                    if (isAsync)
                    {
                        results = CoinFlipper.FlipRepeatedlyAsync(random, numberOfFlips).Result;
                    }
                    else
                    {
                        results = CoinFlipper.FlipRepeatedly(random, numberOfFlips);
                    }
                }
                else
                {
                    result = CoinFlipper.Flip(random);
                }

                if (numberOfFlips > 1)
                {
                    Console.WriteLine("\nWould you like to save results? y/n");

                    string usersAnswerToSaver = Console.ReadLine();

                    switch (usersAnswerToSaver)
                    {
                    case "y":
                        coinFlipResults = PrepareResults(results);
                        SaveResultsToFile(coinFlipResults);
                        break;

                    case "Y":
                        coinFlipResults = PrepareResults(results);
                        SaveResultsToFile(coinFlipResults);
                        break;

                    default:
                        Console.WriteLine("Ok! Without saving");
                        break;
                    }
                }
                else
                {
                    string headOrTail = String.Empty;
                    if (result)
                    {
                        headOrTail = "head";
                    }
                    else
                    {
                        headOrTail = "tail";
                    }
                    Console.WriteLine($"Your result is {headOrTail}");
                }
            }
            else
            {
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine("The argument is not in the correct format. Check and enter the value again");
                GetDataFromUserAndStartFlipping();
            }
        }