السلام عليكم
ارجوا مساعدتي في هذا الكود
حيث اريد ان اضرب مصفوفة تتكون من ثلاث اعندة وثلاث صفوف
في مصفوفة اخر تتكون من عمود واحد وثلاث صفوف
واقوم بتخزين القيم في مصفوفة اخر
حيث اريد ذلك باستخدم multithreading
حيث كل صف في المصفوفة الاولى 3X3
يعتبر thread يقوم بضرب و جمع واخراج النتيجية بحيث يكون من عنزل عن باقي المصفوفة
انا وجدت هذا كود في c#
لكنه يظهر لي خطا لم اعرف ما سببه بالله عليكم مساعدة ضرورية
واذا كان هناك حل بديل لي مسكلتي ارجو اعطائي الحل الكامل لها
-------------------
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Diagnostics;
namespace ConsoleApplication2
{
class Program
{
private int[,] matrix1 = new int[3, 3];
private int[,] matrix2 = new int[3, 1];
private int[,] result = new int[3, 1];
static void Main(string[] args)
{
Thread thread1 = new Thread(new ThreadStart(DisplayThread1));
Thread thread2 = new Thread(new ThreadStart(DisplayThread2));
Thread thread3 = new Thread(new ThreadStart(DisplayThread3));
// start them
thread1.Start();
thread2.Start();
thread3.Start();
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
Console.WriteLine("Enter 1st Matrix: ");
matrix1[i, j] = Convert.ToInt32(Console.ReadLine());
}
} Console.WriteLine();
for (int k = 0; k < 3; k++)
{
for (int l = 0; l < 1; l++)
{
Console.WriteLine("Enter 2st Matrix: ");
matrix2[k, l] = Convert.ToInt32(Console.ReadLine());
}
}
Console.WriteLine(); Console.WriteLine("Matrix 1: ");
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
Console.Write(matrix1[i, j] + " ");
}
Console.WriteLine();
}
Console.WriteLine();
Console.WriteLine("Matrix 2: ");
for (int k = 0; k < 3; k++)
{
for (int l = 0; l < 1; l++)
{
Console.Write(matrix2[k, l] + " ");
}
Console.WriteLine();
}
}
void DisplayThread1()
{
while (_stopThreads == false)
{
lock (this)
{
Console.WriteLine("Display Thread 1");
Console.WriteLine("Matrix 1 * Matrix 2: ");
int i = 0;
int j = 0;
result[i, j] = 0;
for (int z = 0; z < 3; z++)
{
result[i, j] += matrix1[i, z] * matrix2[z, j];
Thread.Sleep(1000);
} Console.Write(result[i, j] + " ");
Console.WriteLine();
Console.ReadLine();
}
}
}
void DisplayThread2()
{
while (_stopThreads == false)
{
// lock on the current instance of the class for thread #2
lock (this)
{
Console.WriteLine("Display Thread 2");
Console.WriteLine("Matrix 1 * Matrix 2: ");
int i = 1;
int j = 0;
result[i, j] = 0;
for (int z = 0; z < 3; z++)
{
result[i, j] += matrix1[i, z] * matrix2[z, j];
Thread.Sleep(1000);
} Console.Write(result[i, j] + " ");
Console.WriteLine();
Console.ReadLine();
}
}
}
void DisplayThread2()
{
while (_stopThreads == false)
{
// lock on the current instance of the class for thread #2
lock (this)
{
Console.WriteLine("Display Thread 3");
Console.WriteLine("Matrix 1 * Matrix 2: ");
int i = 2;
int j = 0;
result[i, j] = 0;
for (int z = 0; z < 3; z++)
{
result[i, j] += matrix1[i, z] * matrix2[z, j];
Thread.Sleep(1000);
} Console.Write(result[i, j] + " ");
Console.WriteLine();
Console.ReadLine();
}
}
}
}
}
------------
وهذا هو الكود ارجوكم ساعدوني