Задание по прямоугольной матрице - C#
Формулировка задачи:
По заданию нужно
Дана целочисленная прямоугольная матрица. Определить
- количество строк, не содержащих ни одного нулевого элемента
- максимальное из чисел, встречающихся в заданной матрице более одного раза.
Вот мой код, посмотрите, плиз, всё ли у меня правильно.
using System; //Дана целочисленная прямоугольная матрица. Определить // - количество строк, не содержащих ни одного нулевого элемента // - максимальное из чисел, встречающихся в заданной матрице более одного раза. namespace Matrix1 { class Program { static void Main(string[] args) { Console.WriteLine("Введите размерность матрицы"); Console.Write("Введите количество строк матрицы n = "); int n = Convert.ToInt32(Console.ReadLine()); Console.Write("Введите количество столбцов матрицы m = "); int m = Convert.ToInt32(Console.ReadLine()); int[,] mas = new int[n, m]; FillMatrix(ref mas, n, m); ShowMatrix(mas, n, m, "Исходная матрица"); Check(mas, n, m); Find(mas, n, m); Console.ReadKey(); } private static void FillMatrix(ref int[,] mas, int n, int m) { Random rand = new Random(); for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { mas[i, j] = rand.Next(-100, 100); } } } private static void ShowMatrix(int[,] mas, int n, int m, string str) { Console.WriteLine(str); for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { Console.Write(mas[i, j] + "\t"); } Console.WriteLine(); } } private static void Check(int[,] mas, int n, int m) { int count = 0; for (int i = 0; i < n; i++) { int k = 0; for (int j = 0; j < m; j++) { if (mas[i, j] == 0) continue; ++k; } if (k == m) ++count; } Console.WriteLine("Количество строк, не содержащих ни одного нулевого элемента, равно {0}", count); } private static void Find(int[,] mas, int n, int m) { int[] tempMas = new int[n * m]; int count = 0; for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { tempMas[count] = mas[i, j]; ++count; } } Array.Sort(tempMas); Array.Reverse(tempMas); ShowMassiv(tempMas, "Отсортированный одномерный массив"); int maxNum; bool flag = false; for (int i = 0; i < tempMas.Length - 1; i++) { if (tempMas[i] != tempMas[i + 1]) continue; maxNum = tempMas[i]; Console.WriteLine("Максимальное из чисел, встречающееся два раза, равно " + maxNum); flag = true; break; } if (flag == false) { Console.WriteLine("В массиве нет чисел, встречающихся два раза."); } } //Вывод одномерного массива private static void ShowMassiv(int[] mas, string str) { Console.WriteLine(str); for (int i = 0; i < mas.Length; ++i) { Console.Write(mas[i] + " "); } Console.WriteLine(); } } }
Решение задачи: «Задание по прямоугольной матрице»
textual
Листинг программы
static void Main(string[] args) { Console.WriteLine("Введите размерность матрицы"); Console.Write("Введите количество строк матрицы n = "); int n = Convert.ToInt32(Console.ReadLine()); Console.Write("Введите количество столбцов матрицы m = "); int m = Convert.ToInt32(Console.ReadLine()); int[,] mas = FillMatrix(n, m); ShowMatrix(mas, "Исходная матрица"); Console.WriteLine("Количество строк, не содержащих ни одного нулевого элемента, равно {0}", Check(mas).ToString()); ; Find(mas); Console.ReadKey(); } private static int[,] FillMatrix(int n, int m) { int[,] mas = new int[n, m]; Random rand = new Random(); for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { mas[i, j] = rand.Next(-100, 100); } } return mas; } private static void ShowMatrix(int[,] mas, string str) { Console.WriteLine(str); for (int i = 0; i < mas.GetLength(0); i++) { for (int j = 0; j < mas.GetLength(1); j++) { Console.Write("{0,4}", mas[i, j]); } Console.WriteLine(); } } private static int Check(int[,] mas) { int count = 0; for (int i = 0; i < mas.GetLength(0); i++) { int k = 0; for (int j = 0; j < mas.GetLength(1); j++) { if (mas[i, j] == 0) continue; ++k; } if (k == mas.GetLength(1)) ++count; } return count; } private static void Find(int[,] mas) { int[] tempMas = new int[mas.GetLength(0) * mas.GetLength(1)]; int count = 0; for (int i = 0; i < mas.GetLength(0); i++) { for (int j = 0; j < mas.GetLength(1); j++) { tempMas[count] = mas[i, j]; ++count; } } Array.Sort(tempMas); Array.Reverse(tempMas); ShowMassiv(tempMas, "Отсортированный одномерный массив"); int maxNum; bool flag = false; for (int i = 0; i < tempMas.Length - 1; i++) { if (tempMas[i] != tempMas[i + 1]) continue; maxNum = tempMas[i]; Console.WriteLine("Максимальное из чисел, встречающееся два раза, равно " + maxNum); flag = true; break; } if (flag == false) { Console.WriteLine("В массиве нет чисел, встречающихся два раза."); } } //Вывод одномерного массива private static void ShowMassiv(int[] mas, string str) { Console.WriteLine(str); for (int i = 0; i < mas.Length; ++i) { Console.Write(mas[i] + " "); } Console.WriteLine(); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д