Advertisement
Guest User

RoflanPominki

a guest
Nov 14th, 2019
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 8.07 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.IO;
  7.  
  8. namespace Gistograma
  9. {
  10.     class Program
  11.     {
  12.         static int Max(int[] array)
  13.         {
  14.             var max = array.Max();
  15.             return max;
  16.         }
  17.         static int Min(int[] array)
  18.         {
  19.             var min = array.Min();
  20.             return min;
  21.         }
  22.         static void PrintOutputArray(int numberOfNums, string[,] arrayOutput)
  23.         {
  24.             for (int i = 0; i < 10; i++)
  25.             {
  26.                 for (int j = 0; j < numberOfNums + 7; j++)
  27.                 {
  28.                     Console.Write(arrayOutput[i, j]);
  29.                 }
  30.                 Console.WriteLine();
  31.             }
  32.         }
  33.         static void MakeGistogramm(int[] numsArray, ref string[,] arrayOutput, string f)
  34.         {
  35.             int pos = 6;
  36.             for (int i = 0; i < numsArray.Length; i++)
  37.             {
  38.                 pos++;
  39.                 int x = 0;
  40.                 int j = 9;
  41.                 while (x < numsArray[i])
  42.                 {
  43.                     x++;
  44.                     arrayOutput[j, pos] = f;
  45.                     j--;
  46.                 }
  47.             }
  48.         }
  49.         static void Adduction(ref int[] numsArray, double[] doubleArray, double c)
  50.         {
  51.             for (int i = 0; i < doubleArray.Length; i++)
  52.             {
  53.                 numsArray[i] = (int)(doubleArray[i] * c + 0.5);
  54.             }
  55.         }
  56.         static void CheckArrayOfNums(ref int[] arrayNums, int numberOfNums)
  57.         {
  58.             for(int i = 0; i < numberOfNums; i++)
  59.             {
  60.                 while (arrayNums[i] > 1024 || arrayNums[i] <= 0)
  61.                 {
  62.                     Console.WriteLine("Enter new num, the old one {0} is incorrect", arrayNums[i]);
  63.                     string str = Console.ReadLine();
  64.                     while (!int.TryParse(str, out int N))
  65.                     {
  66.                         Console.WriteLine("Enter new num, the old one {0} is incorrect", arrayNums[i]);
  67.                         str = Console.ReadLine();
  68.                     }
  69.                     arrayNums[i] = int.Parse(str);
  70.                 }
  71.             }
  72.         }
  73.         static void PrintIntArray(int[] arrayChar)
  74.         {
  75.             for (int i = 0; i < arrayChar.Length; i++)
  76.             {
  77.                 Console.WriteLine(arrayChar[i]);
  78.                 Console.WriteLine();
  79.             }
  80.         }
  81.         static void PrintCharArray(char[] arrayChar)
  82.         {
  83.             for (int i = 0; i < arrayChar.Length; i++)
  84.             {
  85.                 Console.WriteLine(arrayChar[i]);
  86.             }
  87.         }
  88.         static void ArrayCharCheckAndFix(char[] arrayChar)
  89.         {
  90.             for (int i = 0; i < arrayChar.Length; i++)
  91.             {
  92.                 if (arrayChar[i] == '0' || arrayChar[i] == '1' || arrayChar[i] == '2' || arrayChar[i] == '3' || arrayChar[i] == '4' || arrayChar[i] == '5' || arrayChar[i] == '6' || arrayChar[i] == '7' || arrayChar[i] == '8' || arrayChar[i] == '9' || arrayChar[i] == ' ')
  93.                 {
  94.                 }
  95.                 else
  96.                 {
  97.                     Console.WriteLine("{0} is incorrect", i);
  98.                     Console.WriteLine("Enter new element {0}", i);
  99.                     string s = Console.ReadLine();
  100.                     while (!int.TryParse(s, out int N) || N >= 9 || N < 0)
  101.                     {
  102.                         s = Console.ReadLine();
  103.                     }
  104.                     arrayChar[i] = Convert.ToChar(s);
  105.                 }
  106.             }
  107.         }
  108.         static void Main(string[] args)
  109.         {
  110.             do
  111.             {
  112.                 int counterOfLength = 0;
  113.                 int counterOfNums = 0;
  114.                 int[] numsArray = new int[120];
  115.                 int[] arrayNums = new int[120];
  116.                 string s = "";
  117.                 int pos = 0;
  118.                 int numberOfNums = 0;
  119.  
  120.                 Console.WriteLine("Input");
  121.  
  122.                 //input
  123.                 string inputString = Console.ReadLine() + " ";
  124.                 char[] arrayChar = inputString.ToCharArray();
  125.  
  126.                 Console.WriteLine("Enter symbol");
  127.                 string f = Console.ReadLine();
  128.  
  129.                 ArrayCharCheckAndFix(arrayChar);
  130.  
  131.                 PrintCharArray(arrayChar);
  132.  
  133.                 //searching for numbers in the input string
  134.                 for (int i = 0; i < arrayChar.Length; i++)
  135.                 {
  136.                     string str = Convert.ToString(arrayChar[i]);
  137.                     if (!int.TryParse(str, out int N))
  138.                     {
  139.                         try
  140.                         {
  141.                             if (int.TryParse(s, out int a))
  142.                             {
  143.                                 arrayNums[pos] = int.Parse(s);
  144.                             }
  145.                         }
  146.                         catch(System.IndexOutOfRangeException)
  147.                         {
  148.                             Console.WriteLine("Too many numbers");
  149.                             Console.ReadLine();
  150.                             return;
  151.                         }
  152.                         pos++;
  153.                         s = "";
  154.                         numberOfNums++;
  155.                     }
  156.                     else
  157.                     {
  158.                         s = s + arrayChar[i];
  159.                     }
  160.                 }
  161.  
  162.                 CheckArrayOfNums(ref arrayNums, numberOfNums);
  163.  
  164.                 int[] array = new int[numberOfNums];
  165.  
  166.                 for (int i = 0; i < numberOfNums; i++)
  167.                 {
  168.                     array[i] = arrayNums[i];
  169.                 }
  170.  
  171.                 string minNum = Convert.ToString(Min(array));
  172.  
  173.                 int max = arrayNums.Max(); // max * x = 10
  174.                 double c = 10 / (double)max;
  175.                 double[] doubleArray = new double[numberOfNums];
  176.                 for (int i = 0; i < numberOfNums; i++)
  177.                 {
  178.                     doubleArray[i] = (double)arrayNums[i];
  179.                 }
  180.  
  181.                 Adduction(ref numsArray, doubleArray, c);
  182.  
  183.                 //creating an array for output
  184.                 string[,] arrayOutput = new string[10, 126];//+7
  185.  
  186.                 //filling the array with " "
  187.                 for (int i = 0; i < 10; i++)
  188.                 {
  189.                     for (int j = 0; j < numberOfNums + 10; j++)
  190.                     {
  191.                         arrayOutput[i, j] = " ";
  192.                     }
  193.                 }
  194.  
  195.                 //setting some start setting for an array
  196.                 string maxNum = Convert.ToString(Max(arrayNums));
  197.                
  198.                 for (int i = 0; i < maxNum.Length; i++)
  199.                 {
  200.                     arrayOutput[0, i + 1] = Convert.ToString(maxNum[i]);
  201.                 }
  202.                 for (int i = 0; i < minNum.Length; i++)
  203.                 {
  204.                     arrayOutput[9, i + 1] = Convert.ToString(minNum[i]);
  205.                 }
  206.                 //printing the line with "|" symbols
  207.                 for (int i = 0; i < 10; i++)
  208.                 {
  209.                     arrayOutput[i, 6] = "|";
  210.                 }
  211.  
  212.                 MakeGistogramm(numsArray, ref arrayOutput, f);
  213.  
  214.                 PrintOutputArray(numberOfNums, arrayOutput);
  215.                 try
  216.                 {
  217.                     using (StreamWriter sw = new StreamWriter("text.txt", true))
  218.                     {
  219.                         for (int i = 0; i < 10; i++)
  220.                         {
  221.                             for (int j = 0; j < numberOfNums + 7; j++)
  222.                             {
  223.                                 sw.Write(arrayOutput[i, j]);
  224.                             }
  225.                             sw.WriteLine();
  226.                         }
  227.                     }
  228.                 }
  229.                 catch (Exception ex)
  230.                 {
  231.                     Console.WriteLine(ex);
  232.                 }
  233.                 Console.WriteLine();
  234.             } while (Console.ReadKey(true).Key != ConsoleKey.Escape);
  235.         }
  236.     }
  237. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement