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

سؤال عن مقالة عن السحب والارساء

مغلق
بدأه danyowen في 12 نوفمبر 2005 · 2 رد · 407 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

سلام عليكم

اريد شرح عن موضوع السحب والارساء drag&drop لو سمحتوا

كما اريد معرفة كيف نستطيع اختيار رقم عشوائي من مصفوفة ارقام دون تكرار رقم معين مرتين

#2

وعليكم السلام ورحمة الله وبركاته.

اقتباس
اريد شرح عن موضوع السحب والارساء drag&drop لو سمحتوا
أنا الحقيقه كنت أبحث عن موضوع أكتب فيه أو أى مقاله أكتبها ومكنتش عارف أكتب في ايه :D ... سأحوال أن أكتب عنها اليوم ان شاء الله.

بالنسبه لتوليد رقم عشوائي فانت تستخدم Random وتمرر للداله Next الـ Range ... أنظر ::

كيفية انشاء رقم عشوائي random وابحث في المنتدى فيوجد أكثر من موضوع.

#Read

http://MoutazShams.blogspot.com

projects003.gif

أعتذر عن التغيب هذه الأيام نظرا للانشغال المريب

#3

بالنسبة للطلب الثاني و هو اختيار رقم عشوائي من مصفوفة أرقام بدون اختيار الرقم نفسه مرتين

هناك أكثر من 100000 طريقة سأحاول شرح طريقتين منهم ان شاء الله

الأولى الطريقة السهلة البسيطة المباشرة

    class Program
    {
        static int[] array = new int[] { 2, 4, 6, 3, 7, 19 };
        static bool[] tmp = new bool[array.Length];

        static void Main(string[] args)
        {
            for (int i = 0; i < array.Length; i++)
                Console.WriteLine(GetRandomNumber());
        }

        static int GetRandomNumber()
        {
            Random rand = new Random();
            int index;
            do
            {
                index = rand.Next(array.Length);
            }
            while(IsRepeated(index));
            setRepeated(index);
            return array[index];
        }

        static bool IsRepeated(int index)
        {
            return tmp[index];
        }
        static void setRepeated(int index)
        {
            tmp[index] = true;
        }
    }

و هذه الطريقة بسيطة جداً و لكن يعيبها أننا حجزنا Array اخر من نوع bool بنفس حجم الArray الأساسي ....

هناك طريقة أخرى يمكن استخدامها في حالة أن الarray الأساسي لن يتم استخدامه بعد ذلك أي أن الData المخزنة فيه ليست ذات أهمية بعد تنفيذ العملية

class Program
    {
        static int[] array = new int[] { 2, 4, 6, 3, 7, 19 };
        //static bool[] tmp = new bool[array.Length];

        static void Main(string[] args)
        {
            for (int i = 0; i < array.Length; i++)
                Console.WriteLine(GetRandomNumber());
        }

        static int GetRandomNumber()
        {
            Random rand = new Random();
            int index;
            do
            {
                index = rand.Next(array.Length);
            }
            while(IsRepeated(index));
            int value = array[index];
            setRepeated(index);
            return value;
        }

        static bool IsRepeated(int index)
        {
            //return tmp[index];
            return (array[index] == int.MinValue);
        }
        static void setRepeated(int index)
        {
            array[index] = int.MinValue;
        }
    }

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

Sr. Software Development Engineer
Hulu, LLC
My Blogs

هذا الموضوع مغلق.

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