الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

ارجوا المساعدة في هذا الكود لاني لم اجد حل

بدأه weeeha في 2 أبريل 2010 · 5 رد · 654 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

ارجوا مساعدتي في هذا الكود

حيث اريد ان اضرب مصفوفة تتكون من ثلاث اعندة وثلاث صفوف

في مصفوفة اخر تتكون من عمود واحد وثلاث صفوف

واقوم بتخزين القيم في مصفوفة اخر

حيث اريد ذلك باستخدم 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();

}

}

}

}

}

------------

وهذا هو الكود ارجوكم ساعدوني

#2

أخى أجريت بعض التعديلات على الكود جربه

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Diagnostics;

namespace ConsoleTest
{


    public class Program
    {
        private static int[,] matrix1 = new int[3, 3];
        private static int[,] matrix2 = new int[3, 1];
        private static int[,] result = new int[3, 1];
        static bool _stopThreads = true;


        public static void DisplayThread1()
        {
            while (_stopThreads == false)
            {

                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();

            }
        }

        public static 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();
                //}
            }
        }

        public static void DisplayThread3()
        {
            while (_stopThreads == false)
            {
                // lock on the current instance of the class for thread #2

                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();

            }
        }



        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();
            }
        }

    }

}

 وممّا زادنـــي شرفــاً وتيهــاً   **  وكدت بأخمصي أطأ الثريّا

دخولي تحت قولك يا عبادي  **   وأن صيّرت أحمد لي نبيّـاً

#3

Error 1 The type or namespace name 'Linq' does not exist in the namespace 'System' (are you missing an assembly reference?) C:\Documents and Settings\mohammed\Local Settings\Application Data\Temporary Projects\ConsoleApplication1\Program.cs 3 14 ConsoleApplication1

انا جربت الكود ويطلعلي في هذا الخطا

لم اعرف ما الحل لهذا الخطا هل البرنامج الذي استخدمه لا توجد به المكتبة الذي يحتاجها او ماذا

ارجو ساعدني

#4

انا استخدم

Microsoft Visual C# 2005 Express Edition

علمت بحث في نت ووجدت انه لازم اضيف مكتبة معينة للرفرينس

using System.Linq

ووجدت انه لو اضيف مكتبة

Add System.Core reference

ح تحل المشكلة بس ما اعرف كيف

وانه لازم يكون اصدارك جديد

لو سحمت ارشدنا

#5

أخى أنت لاتحتاج لكل هذا

الكود يعمل مع تمام على VS2008

فأنت لاتستخدم ال using System.Linq; ويمكنك حذفها

post-207223-12702929923597_thumb.jpg

 وممّا زادنـــي شرفــاً وتيهــاً   **  وكدت بأخمصي أطأ الثريّا

دخولي تحت قولك يا عبادي  **   وأن صيّرت أحمد لي نبيّـاً

#6

اذا كان عليا

حذفها

في نتيجة الضرب

انا تطلعلي

قيمة المصفوفتين فقط

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…