PDA

View Full Version : سوال: سوال در مورد ضرب ماتریس ها



aseman-sky
جمعه 15 اردیبهشت 1391, 19:11 عصر
آخرین سوال از قسمت ماتریس ها:لبخند:ارور هم که خودتون میدونید میده


int[,] ArrayA = new int[2, 3] { { 1, 3, 5 }, { 1, 8, 9 } };
int[,] ArrayB = new int[3, 2] { { 3, 5 }, { 8, 9 }, { 6, 4 } };
int[,] ArrayC = new int[2, 3];

for (int i = 0; i <= 2; i++)
for (int j = 0; j <= 3; i++)
ArrayC = 0;


for (int k = 0; k <= 3; k++)
ArrayC[i, j] = ArrayA[i, k] * ArrayB[k, j] + ArrayC[i, j];

listView1.Items.Add(ArrayC[i, j].ToString());

توی جزوه در 2 حلقه ی for بالا به جای اینکه بنویسه <2 و <3 به جای این 2 عدد n و m گذاشته که فکر کنم به این دلیل هست که کلا برنامه توی جزوه از اول نوشته نشده و از حلقه های for شروع کردن به نوشتن برای همین این جا این 2 تا رو اینطوری نوشتن

Mahmoud.Afrad
جمعه 15 اردیبهشت 1391, 23:31 عصر
اندیس از صفر تا 3 میشه 4 بار تکرار پس اون مساوی شرط حلقه رو بردار(این بار هزارم):چشمک:


دستوراتی که باید داخل for اجرا بشوند رو داخل { } قرار بدید.

mrbm_2007
شنبه 16 اردیبهشت 1391, 02:53 صبح
int[,] ArrayA = new int[2, 3] { { 1, 3, 5 }, { 1, 8, 9 } };
int[,] ArrayB = new int[3, 2] { { 3, 5 }, { 8, 9 }, { 6, 4 } };
int[,] ArrayC = new int[2, 3];

for (int i = 0; i < 2; i++)
for (int j = 0; j < 3; i++)
{
ArrayC[i, j] = 0;

for (int k = 0; k < 3; k++)
ArrayC[i, j] += ArrayA[i, k] * ArrayB[k, j];

listView1.Items.Add(ArrayC[i, j].ToString());
}

aseman-sky
شنبه 16 اردیبهشت 1391, 08:58 صبح
int[,] ArrayA = new int[2, 3] { { 1, 3, 5 }, { 1, 8, 9 } };
int[,] ArrayB = new int[3, 2] { { 3, 5 }, { 8, 9 }, { 6, 4 } };
int[,] ArrayC = new int[2, 3];

for (int i = 0; i < 2; i++)
for (int j = 0; j < 3; i++)
{
ArrayC[i, j] = 0;

for (int k = 0; k < 3; k++)
ArrayC[i, j] += ArrayA[i, k] * ArrayB[k, j];

listView1.Items.Add(ArrayC[i, j].ToString());
}


ارور در قسمت ArrayC[i, j] = 0;
Index was outside the bounds of the array.

mrbm_2007
شنبه 16 اردیبهشت 1391, 12:34 عصر
جواب یک ماتریس 2 در 2 است !


int[,] ArrayA = new int[2, 3] { { 1, 3, 5 }, { 1, 8, 9 } };
int[,] ArrayB = new int[3, 2] { { 3, 5 }, { 8, 9 }, { 6, 4 } };
int[,] ArrayC = new int[2, 2];

for (int i = 0; i < 2; i++)
for (int j = 0; j < 2; i++)
{
ArrayC[i, j] = 0;

for (int k = 0; k < 3; k++)
ArrayC[i, j] += ArrayA[i, k] * ArrayB[k, j];

listView1.Items.Add(ArrayC[i, j].ToString());
}

aseman-sky
شنبه 16 اردیبهشت 1391, 18:49 عصر
بازم همون ارور قبلی رو میده

Mahmoud.Afrad
شنبه 16 اردیبهشت 1391, 19:35 عصر
اشتباه در حلقه داخلی هست به جای اینکه که j++ باشه نوشتید i++



int[,] ArrayA = new int[2, 3] { { 1, 3, 5 }, { 1, 8, 9 } };
int[,] ArrayB = new int[3, 2] { { 3, 5 }, { 8, 9 }, { 6, 4 } };
int[,] ArrayC = new int[2, 2];

for (int i = 0; i < 2; i++)
for (int j = 0; j < 2; j++)
{
MessageBox.Show(i.ToString() + j.ToString());
ArrayC[i, j] = 0;

for (int k = 0; k < 3; k++)
ArrayC[i, j] += ArrayA[i, k] * ArrayB[k, j];

listView1.Items.Add(ArrayC[i, j].ToString());
}