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