Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace PR3
- {
- class Program
- {
- static void Main(string[] args)
- {
- //--------------1
- Random rnd = new Random();
- Console.Write("Введите количество строк матрицы: ");
- int width = InputNumber(1000);
- Console.Write("Введите количество колонок матрицы: ");
- int length = InputNumber(1000);
- Console.Write("Укажите диапазон рандома:\nМинимум: ");
- int minValue = InputNumber(1000, -1000);
- Console.Write("Максимум: ");
- int maxValue = InputNumber(1000, -1000);
- List<int[]> matrix = new List<int[]>();
- //Заполнение матрицы и вывод на экран
- Console.WriteLine("\nИсходная матрица: \n");
- for (int i = 0; i < width; i++)
- {
- matrix.Add(new int[length]);
- for (int j = 0; j < length; j++)
- {
- matrix[i][j] = rnd.Next(minValue, maxValue);
- Console.Write(matrix[i][j] + "\t");
- }
- Console.WriteLine();
- }
- //--------------Вариант 1
- int SortedLines = 0;
- for (int i = 0; i < width; i++)
- {
- bool isSorted = true;
- for (int j = 0; j < length - 1; j++)
- {
- if (matrix[i][j] > matrix[i][j + 1])
- {
- isSorted = false;
- }
- }
- if (isSorted)
- {
- SortedLines++;
- }
- }
- Console.WriteLine("\nКоличество сортированных строк: {0}\n", SortedLines);
- //--------------2
- int maxZeroCount = 0, maxZeroIndex = 0;
- bool isHaveZero = false;
- for (int i = 0; i < width; i++)
- {
- int zeroCount = 0;
- for (int j = 0; j < length; j++)
- {
- if (matrix[i][j] == 0)
- {
- isHaveZero = true;
- zeroCount++;
- }
- }
- if (zeroCount > maxZeroCount)
- {
- maxZeroCount = zeroCount;
- maxZeroIndex = i;
- }
- }
- //Если нашли строку с нулями, то удаляем ее
- if (isHaveZero)
- {
- Console.Write("Удалена строка: ");
- for (int i = 0; i < length; i++)
- {
- Console.Write(matrix[maxZeroIndex][i] + "\t");
- } /*Code protected by ZAV*/
- Console.WriteLine();
- matrix.RemoveAt(maxZeroIndex);
- width--;
- }
- Console.WriteLine("\nМатрица после удаления строки: \n");
- OutputMatrix(matrix, width, length);
- //--------------3
- for (int i = 0; i < width; i++)
- {
- quickMatrixSort(matrix, i, 0, length - 1);
- }
- Console.WriteLine("\nОтсортированная матрица:\n");
- OutputMatrix(matrix, width, length);
- //--------------4
- width = length = 7;
- matrix.Clear();
- for (int i = 0; i < width; i++)
- {
- matrix.Add(new int[length]);
- }
- int number = 1;
- int countNumbers = 7;
- for (int i = 0; i < countNumbers; i++)
- {
- matrix[0][i] = number++;
- }
- countNumbers--;
- for (int i = 1; i < 4; i++)
- {
- for (int j = 0; j < countNumbers; j++)
- {
- matrix[j + i][length - i] = number++;
- }
- for (int j = 0; j < countNumbers; j++)
- {
- matrix[width - i][length - j - i - 1] = number++;
- }
- countNumbers--;
- for (int j = 0; j < countNumbers; j++)
- {
- matrix[width - j - i - 1][i - 1] = number++;
- }
- for (int j = 0; j < countNumbers; j++)
- {
- matrix[i][j + i] = number++;
- }
- countNumbers--;
- }
- Console.WriteLine("\nМатрица спиралькой:\n");
- OutputMatrix(matrix, width, length);
- Console.ReadLine();
- }
- //Функции
- static void quickMatrixSort(List<int[]> matrix, int width, int left, int right)
- {
- int temp;
- int x = matrix[width][left + (right - left) / 2];
- int i = left;
- int j = right;
- while (i <= j)
- {
- while (matrix[width][i] < x) i++;
- while (matrix[width][j] > x) j--;
- if (i <= j)
- {
- temp = matrix[width][i];
- matrix[width][i] = matrix[width][j];
- matrix[width][j] = temp;
- i++;
- j--;
- }
- }
- if (i < right)
- quickMatrixSort(matrix, width, i, right);
- if (left < j)
- quickMatrixSort(matrix, width, left, j);
- }
- static void OutputMatrix(List<int[]> matrix, int width, int length)
- {
- for (int i = 0; i < width; i++)
- {
- for (int j = 0; j < length; j++)
- {
- Console.Write(matrix[i][j] + "\t");
- }
- Console.WriteLine();
- }
- }
- static int InputNumber(int max = 0x7FFFFFFF, int min = 0)
- {
- int number;
- while (!Int32.TryParse(Console.ReadLine(), out number) || number < min || number > max)
- {
- Console.WriteLine("Ошибка ввода. Повторите попытку.");
- }
- return number;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment