Из заданной матрицы удалить строку и столбец, в которых находится первый элемент, равный нулю - C#
Формулировка задачи:
И полученную матрицу уплотнить.
Вот что получилось, но не работает, никак не могу закончить:
static void Main(string[] args) { int i, j; int row = 0; bool yslovie = true; Console.WriteLine("Введите количество столбцов"); int n = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("Введите количество строк"); int m = Convert.ToInt32(Console.ReadLine()); int[,] massiv = new int[m, n]; //объявляем массив Random rnd = new Random(); //функция рандом for (i = 0; i < m; i++) { for (j = 0; j < n; j++) { massiv[i, j] = rnd.Next(0, 2); //с помощью рандома присваиваем элементы заданный диапазон Console.Write(massiv[i, j] + "\t"); if (massiv[i, j] == row) { yslovie = true; } } Console.WriteLine(); } int[,] matrix = new int[m - 1, n]; if (yslovie == true) { for (i = 0; i < matrix.GetLength(0); i++) { if (i != row) { for (j = 0; j < matrix.GetLength(1); j++) { matrix[i, j] = massiv[i, j]; continue; } } else { for (j = 0; j < matrix.GetLength(1); j++) { matrix[row, j] = massiv[i + 1, j]; continue; } row++; } } } Console.WriteLine("Массив:"); // выводим массив for (i = 0; i < m; i++) { for (j = 0; j < n; j++) { Console.Write(matrix[i, j] + "\t"); } Console.WriteLine(); } Console.ReadKey(); } } }
Решение задачи: «Из заданной матрицы удалить строку и столбец, в которых находится первый элемент, равный нулю»
textual
Листинг программы
using System; namespace ConsoleApplication11 { class Program { static void Main(string[] args) { int i, j; int row = 0; //bool yslovie = true; bool yslovie = false; Console.WriteLine("Введите количество столбцов"); int n = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("Введите количество строк"); int m = Convert.ToInt32(Console.ReadLine()); int[,] massiv = new int[m, n]; //объявляем массив Random rnd = new Random(); //функция рандом //->правки int[,] matrix = new int[m-1,n-1]; int x = 0; int y = 0; //<- правки for (i = 0; i < m; i++) { for (j = 0; j < n; j++) { massiv[i, j] = rnd.Next(0, 5); //с помощью рандома присваиваем элементы заданный диапазон Console.Write(massiv[i, j] + "\t"); //if (massiv[i, j] == row) if (massiv[i, j] == row & !yslovie)//избегаем переопределение первого найденного { yslovie = true; x = i; y = j; } } Console.WriteLine(); } //int[,] matrix = new int[m - 1, n]; if (yslovie == true) { for (i = 0; i < matrix.GetLength(0); i++) { //if (i != row) //{ // for (j = 0; j < matrix.GetLength(1); j++) // { // matrix[i, j] = massiv[i, j]; // continue; // } //} //else //{ // for (j = 0; j < matrix.GetLength(1); j++) // { // matrix[row, j] = massiv[i + 1, j]; // continue; // } // row++; //} if (i < x)//x -удаляемая строка { for (j = 0; j < matrix.GetLength(1); j++) if (j < y)//y -удаляемый столбец matrix[i, j] = massiv[i, j]; else matrix[i, j] = massiv[i, j+1]; ; } else { for (j = 0; j < matrix.GetLength(1); j++) if (j < y) matrix[i, j] = massiv[i+1, j]; else matrix[i, j] = massiv[i+1, j + 1]; } } } Console.WriteLine("Массив:"); // выводим массив for (i = 0; i < matrix.GetLength(0); i++) { for (j = 0; j < matrix.GetLength(1); j++) { Console.Write(matrix[i, j] + "\t"); } Console.WriteLine(); } Console.ReadKey(); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д