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

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.778 из 5
Похожие ответы