Перемножение двух матриц - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, выполняю для саморазвития не большой пример по перемножению двух матриц на C#. И когда пытаюсь занести в массив рандомные значение, у меня прекращается работа программы и выдает ошибку о том,что "Индекс находился вне границ массива". Не могу понять в чем проблема,прощу помочь разобраться в этом.
 class Program
    {
        static void Main(string[] args)
        {
            Random r = new Random();
            int a_rows, a_collumns, b_rows, b_collumns;
            Console.ForegroundColor = ConsoleColor.White;
            for (;;)
            {
                Console.WriteLine("Используйте свойство,что  кол. столбцов первой матрицы \n должно равняться кол.строк второй матрицы");
                try
                {
                    Console.WriteLine("Введите кол.строк первой матрицы");
                    a_rows = Convert.ToInt32(Console.ReadLine());
                    Console.WriteLine("Введите кол.столбцов первой матрицы");
                    a_collumns = Convert.ToInt32(Console.ReadLine());
                    Console.WriteLine("Введите кол.строк второй матрицы");
                    b_rows = Convert.ToInt32(Console.ReadLine());
                    if (a_collumns != b_rows)
                        continue;
                    Console.WriteLine("Введите кол.столбцов второй  матрицы");
                    b_collumns = Convert.ToInt32(Console.ReadLine());
                    break;
                }
                catch
                {
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.WriteLine("Вы можете вводить только цифры.");
                    Console.ForegroundColor = ConsoleColor.White;
                }
 
            }
            Matrix a = new Matrix(a_rows, a_collumns);
            Matrix b = new Matrix(b_rows, b_collumns);
            Matrix c = new Matrix(a_collumns, b_rows);
            for (int i = 0; i < a_rows; i++)
                for (int j = 0; j < a_collumns; i++)
                    a[i, j] = r.Next(4,100);
            for (int i = 0; i < b_rows; i++)
                for (int j = 0; j < b_collumns; i++)
                    b[i, j] = r.Next(4,100);
 
            a.show();
            b.show();
            c.show();
        }
    }
    class Matrix
    {
        int[,] array;
        int rows, collumns;
 
        public int Collumns
        {
           get { return collumns; }
           set
            {
                if (value > 0)
                collumns = value;
            }
        }
        public int Rows
        {
            get
            {return rows;}
            set
            {
             if (value > 0)
             rows = value;
            }
        }
        public int this[int i, int j] // индексатор
        {
            get { return array[i, j]; }
            set {
                array[i, j] = value; }
        }
        public Matrix(int countofRows, int countofCollumns)
        {
            Rows = countofRows;
            Collumns = countofCollumns;
            array = new int[Rows, Collumns];
        }
       public void show()
        {
            for (int i = 0; i < Rows; i++)
            {
                for (int j = 0; j < Collumns; j++)
                {
                    Console.Write("{0,6}",array[i, j]);
                }
                Console.WriteLine();
            }
            Console.ReadLine();
        }
        
    }

Решение задачи: «Перемножение двух матриц»

textual
Листинг программы
i++

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


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

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

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