PhotoShaman

ПР #3

May 12th, 2017
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 6.54 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.  
  7. namespace PR3
  8. {
  9.     class Program
  10.     {
  11.         static void Main(string[] args)
  12.         {
  13.             //--------------1
  14.             Random rnd = new Random();
  15.             Console.Write("Введите количество строк матрицы: ");
  16.             int width = InputNumber(1000);
  17.             Console.Write("Введите количество колонок матрицы: ");
  18.             int length = InputNumber(1000);
  19.  
  20.             Console.Write("Укажите диапазон рандома:\nМинимум: ");
  21.             int minValue = InputNumber(1000, -1000);
  22.             Console.Write("Максимум: ");
  23.             int maxValue = InputNumber(1000, -1000);
  24.            
  25.             List<int[]> matrix = new List<int[]>();
  26.  
  27.             //Заполнение матрицы и вывод на экран
  28.             Console.WriteLine("\nИсходная матрица: \n");
  29.             for (int i = 0; i < width; i++)
  30.             {
  31.                 matrix.Add(new int[length]);
  32.                 for (int j = 0; j < length; j++)
  33.                 {
  34.                     matrix[i][j] = rnd.Next(minValue, maxValue);
  35.                     Console.Write(matrix[i][j] + "\t");
  36.                 }
  37.                 Console.WriteLine();
  38.             }
  39.  
  40.             //--------------Вариант 1
  41.             int SortedLines = 0;
  42.             for (int i = 0; i < width; i++)
  43.             {
  44.                 bool isSorted = true;
  45.                 for (int j = 0; j < length - 1; j++)
  46.                 {
  47.                     if (matrix[i][j] > matrix[i][j + 1])
  48.                     {
  49.                         isSorted = false;
  50.                     }
  51.                 }
  52.                 if (isSorted)
  53.                 {
  54.                     SortedLines++;
  55.                 }
  56.             }
  57.             Console.WriteLine("\nКоличество сортированных строк: {0}\n", SortedLines);
  58.  
  59.             //--------------2
  60.             int maxZeroCount = 0, maxZeroIndex = 0;
  61.             bool isHaveZero = false;
  62.             for (int i = 0; i < width; i++)
  63.             {
  64.                 int zeroCount = 0;
  65.                 for (int j = 0; j < length; j++)
  66.                 {
  67.                     if (matrix[i][j] == 0)
  68.                     {
  69.                         isHaveZero = true;
  70.                         zeroCount++;
  71.                     }
  72.                 }
  73.                 if (zeroCount > maxZeroCount)
  74.                 {
  75.                     maxZeroCount = zeroCount;
  76.                     maxZeroIndex = i;
  77.                 }
  78.             }
  79.             //Если нашли строку с нулями, то удаляем ее
  80.             if (isHaveZero)
  81.             {
  82.                 Console.Write("Удалена строка: ");
  83.                 for (int i = 0; i < length; i++)
  84.                 {
  85.                     Console.Write(matrix[maxZeroIndex][i] + "\t");
  86.                 } /*Code protected by ZAV*/
  87.                 Console.WriteLine();
  88.                 matrix.RemoveAt(maxZeroIndex);
  89.                 width--;
  90.             }
  91.  
  92.             Console.WriteLine("\nМатрица после удаления строки: \n");
  93.             OutputMatrix(matrix, width, length);
  94.  
  95.             //--------------3
  96.  
  97.             for (int i = 0; i < width; i++)
  98.             {
  99.                 quickMatrixSort(matrix, i, 0, length - 1);
  100.             }
  101.  
  102.             Console.WriteLine("\nОтсортированная матрица:\n");
  103.             OutputMatrix(matrix, width, length);
  104.  
  105.             //--------------4
  106.  
  107.             width = length = 7;
  108.  
  109.             matrix.Clear();
  110.             for (int i = 0; i < width; i++)
  111.             {
  112.                 matrix.Add(new int[length]);
  113.             }
  114.  
  115.             int number = 1;
  116.             int countNumbers = 7;
  117.             for (int i = 0; i < countNumbers; i++)
  118.             {
  119.                 matrix[0][i] = number++;
  120.             }
  121.             countNumbers--;
  122.             for (int i = 1; i < 4; i++)
  123.             {
  124.                 for (int j = 0; j < countNumbers; j++)
  125.                 {
  126.                     matrix[j + i][length - i] = number++;
  127.                 }
  128.                 for (int j = 0; j < countNumbers; j++)
  129.                 {
  130.                     matrix[width - i][length - j - i - 1] = number++;
  131.                 }
  132.                 countNumbers--;
  133.                 for (int j = 0; j < countNumbers; j++)
  134.                 {
  135.                     matrix[width - j - i - 1][i - 1] = number++;
  136.                 }
  137.                 for (int j = 0; j < countNumbers; j++)
  138.                 {
  139.                     matrix[i][j + i] = number++;
  140.                 }
  141.                 countNumbers--;
  142.             }
  143.  
  144.             Console.WriteLine("\nМатрица спиралькой:\n");
  145.             OutputMatrix(matrix, width, length);
  146.             Console.ReadLine();
  147.         }
  148.  
  149.         //Функции
  150.         static void quickMatrixSort(List<int[]> matrix, int width, int left, int right)
  151.         {
  152.             int temp;
  153.             int x = matrix[width][left + (right - left) / 2];
  154.             int i = left;
  155.             int j = right;
  156.             while (i <= j)
  157.             {
  158.                 while (matrix[width][i] < x) i++;
  159.                 while (matrix[width][j] > x) j--;
  160.                 if (i <= j)
  161.                 {
  162.                     temp = matrix[width][i];
  163.                     matrix[width][i] = matrix[width][j];
  164.                     matrix[width][j] = temp;
  165.                     i++;
  166.                     j--;
  167.                 }
  168.             }
  169.             if (i < right)
  170.                 quickMatrixSort(matrix, width, i, right);
  171.             if (left < j)
  172.                 quickMatrixSort(matrix, width, left, j);
  173.         }
  174.  
  175.         static void OutputMatrix(List<int[]> matrix, int width, int length)
  176.         {
  177.             for (int i = 0; i < width; i++)
  178.             {
  179.                 for (int j = 0; j < length; j++)
  180.                 {
  181.                     Console.Write(matrix[i][j] + "\t");
  182.                 }
  183.                 Console.WriteLine();
  184.             }
  185.         }
  186.  
  187.         static int InputNumber(int max = 0x7FFFFFFF, int min = 0)
  188.         {
  189.             int number;
  190.             while (!Int32.TryParse(Console.ReadLine(), out number) || number < min || number > max)
  191.             {
  192.                 Console.WriteLine("Ошибка ввода. Повторите попытку.");
  193.             }
  194.             return number;
  195.         }
  196.     }
  197. }
Advertisement
Add Comment
Please, Sign In to add comment