Из заданной матрицы удалить строку и столбец, в которых находится первый элемент, равный нулю - 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();
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д