Перемножение двух матриц - 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++