إعـــــــلان

تقليص
لا يوجد إعلان حتى الآن.

تمرين : ضمان عدم التكرار عند ادخال القيم للمصفوفات

تقليص
هذا الموضوع مغلق.
X
X
 
  • تصفية - فلترة
  • الوقت
  • عرض
إلغاء تحديد الكل
مشاركات جديدة

  • #31
    المشاركة الأصلية بواسطة عبود عبود مشاهدة المشاركة
    طيب ما هى مشكل إدخال كود التوليد داخل الحلقة التكرارية ومن ثم عملية المقارنة كما هو واضح فى الملف السابق بسيطة ومن الممكن إجراء هذة العملية بدون وضع الشرط للمقارنة داخل وظيفة " كده فهمت طلبك السابق "
    بالضبط
    هذا هو المطلوب فى التمرين
    و لا اعتقد انه سيشكل اى مشكل لك
    و وضع كود المقارنة بداخل وظيفة ليس شرطا فى التمرين

    فقط "ان امكن" نريد رؤية الكود كاملا

    تعليق


    • #32
      ماشى نكمل غدا إن شاء الله " سوف أحاول ضبط الأكواد الآن شوية فإن لم أتمكن من ذلك سوف أعاود المحاولة غدا وبنفس الطريقة التى أعتمدت عليها "

      تعليق


      • #33
        لا بأس .. خذ وقتك
        فتنوع الحلول سيثرى الموضوع و سيفيد الجميع
        خالص تحياتى

        تعليق


        • #34
          المشاركة الأصلية بواسطة فرح صالحي مشاهدة المشاركة
          لم استطع قياس سرعة استجابة الكود
          اضغط على الزر فتقع استجابة فورية
          شـكــ وبارك الله فيك ـــرا لك ... لك مني أجمل تحية .
          ************************************************** *******
          هذا كود الظروف القاسية لا حظ كيف خرج عن السكة ولم يستعمل اليست بوكس
          اخى فرح
          إليك كود الظروف القاسية بعد تعديله ليناسب الاظهار فى الليستبوكس
          كود PHP:
          -- Mohager Prevent Table Duplicate--
          ListBox.DeleteItem("ListBox1", -1);
          ListBox.SetUpdate("ListBox1"false);
          t1 os.clock()

          function 
          Add_Unique(TableName,Element)
          if  
          TableName[Element]== nil then 
            TableName
          [Element] =  Element
          end
          end

          MyTable 
          = {}
          t1 os.clock()
          for 
          1,50000 do
          rnd Math.Random(110000);
          Add_Unique(MyTable,rnd)
          end

          t2 
          os.clock()
          t3 t2 t1
          tco 
          Table.Count(MyTable);
          Dialog.Message("Notice"tco.. "    "..t3); 
           
          for 
          a,z in pairs(MyTable) do
          ListBox.AddItem("ListBox1"z"");
          end
          ListBox
          .SetUpdate("ListBox1"true); 
          لاحظ اننا سنقيس الوقت قبل الاظهار فى الليستبوكس
          لأننا نريد إختبار سرعة الكود ..(انا المسئول عن ذلك)
          و ليس إختبار سرعة كائن الليستبوكس فى اظهار النتائج ...(انديجوروز و ميكروسوفت هما المسئولان عن ذلك)

          لاحظ كيف سأتخطى عيب بطء كائن الليستبوكس فى اظهار عدد ضخم من النتائج
          راقب السطر الثالث و السطر الأخير
          قم بتعليق او حذف السطر الثالث و راقب النتيجة و لاحظ الفرق

          تعليق


          • #35
            تصدق بعد محاولات عديدة ثم الرجوع للنظر فى ملفك المفتوح " دماغى إتقلبت لما شوفت النتيجة التى تظهر فى الليست بوكس أثناء معاينة ملفك المفتوح فلم أجد بعض الأرقام والمفروض أنى فهمت طلبك أو تمرينك أن العملية العشوائية للتوليد تستمر حتى ينتج فى الليست بوكس كافة عناصرها من 1 إلى 6 "

            بجد دماغى إتقلبت هههههههه

            تعليق


            • #36

              المطلوب ببساطة توليد رقم عشوائى 6 مرات فقط
              مع عدم ادراج اى عنصر مكرر فى مصفوفة النتائج
              يمكنك الرجوع للمشاركة الأولى ففيها شرح مفصل


              المشاركة الأصلية بواسطة المـهاجر مشاهدة المشاركة
              توضيح
              نفترض ان النرد اعطى هذه القيم من الستة رميات
              1 و 2 و 2 و 5 و5 و 5
              المفروض ان يسجل البرنامج القيم التالية
              1 و 2 و 5 فقط لأن الباقى مكرر
              هنا يكون طول المصفوفة 3 عناصر فقط

              و لو فرضنا ان النرد اعطانا
              1و1و1و1و1و1 فلن يسجل برنامجنا سوى قيمة 1 فقط لأن الباقى مكرر
              هنا يكون طول المصفوفة عنصر واحد فقط

              تعليق


              • #37
                المشاركة الأصلية بواسطة المـهاجر مشاهدة المشاركة

                المطلوب ببساطة توليد رقم عشوائى 6 مرات فقط
                مع عدم ادراج اى عنصر مكرر فى مصفوفة النتائج
                يمكنك الرجوع للمشاركة الأولى ففيها شرح مفصل
                فى تحدى شديد للنوم وبنفس الفكرة الأولى قلت أعمل الكود بالشكل ده :

                كود:
                abood = {};
                for i=1,6 do
                   result = Math.Random(1, 6);
                   if #abood<1 then
                      abood[#abood+1]=result ;
                     elseif #abood>=1  then 
                       for s=1,#abood do
                           if result~=abood[s] and s==#abood then
                              abood[#abood+1]=result ;
                             elseif result==abood[s] then
                               break 
                           end
                       end
                   end
                end
                t = Table.Concat(abood, ",", 1, TABLE_ALL);
                Input.SetText("Input1", t);
                الملفات المرفقة

                تعليق


                • #38
                  فعلا الكود يأتى بالنتائج الصحيحة 10/10

                  لكن سنرجع للسرعة
                  خصوصا بعد ادراجك لحلقة فور للبحث
                  و حتى تفهمنى اسرع
                  كودك به حلقتان
                  الأولى للإدراج
                  و الثانية للبحث بداخل المصفوفة
                  سنضع دالتك فى ظروف قاسية كما فعلت فى دالتى

                  قارن السرعة و ستفهم وجهة نظرى
                  الكود خاصتك
                  كود PHP:
                  t1 os.clock()
                     
                  abood = {};
                  for 
                  i=1,10000 do
                     
                  result Math.Random(11000);
                     if 
                  #abood<1 then
                        
                  abood[#abood+1]=result ;
                       
                  elseif #abood>=1  then 
                         
                  for s=1,#abood do
                             
                  if result~=abood[s] and s==#abood then
                                
                  abood[#abood+1]=result ;
                               
                  elseif result==abood[sthen
                                 
                  break 
                             
                  end
                         end
                     end
                  end

                  t2 
                  os.clock()
                  t3 t2 t1
                  tco 
                  Table.Count(abood);
                  Dialog.Message("Notice"tco.. "    "..t3); 
                  الكود الخاص بحل التمرين بعد وضعه بنفس الظروف
                  كود PHP:
                  -- Mohager Prevent Table Duplicate--
                  ListBox.DeleteItem("ListBox1", -1);
                  t1 os.clock()

                  function 
                  Add_Unique(TableName,Element)
                  if  
                  TableName[Element]== nil then 
                    TableName
                  [Element] =  Element
                  end
                  end

                  MyTable 
                  = {}
                  t1 os.clock()
                  for 
                  1,10000 do
                  rnd Math.Random(11000);
                  Add_Unique(MyTable,rnd)
                  end

                  t2 
                  os.clock()
                  t3 t2 t1
                  tco 
                  Table.Count(MyTable);
                  Dialog.Message("Notice"tco.. "    "..t3); 
                  الفرق يصل ل 285 ضعف لسرعة التنفيذ
                  هل تتفق معى الان فى الرأى ؟
                  حسنا
                  لنقم بتعديل على الكود خاصتك
                  إليك الكود خاصتك بدون اى تعديل سوى تعليق الحلقة الخاصة بالبحث
                  فهل تجربه و تخبرنى بأنك وضعت حلقة تكرار زائدة تماما عن الاحتياج ؟؟
                  أم لا زلت ترانى مخطئ ؟؟
                  كيف يعمل الكود خاصتك بشكل صحيح بعد ان قمت انا بحذف حلقة فور "For" الثانية منه ؟؟
                  بعد هذا التعديل تتساوى السرعتين
                  كود PHP:
                  t1 os.clock()
                     
                  abood = {};
                  for 
                  i=1,10000 do
                     
                  result Math.Random(11000);
                     if 
                  #abood<1 then
                        
                  abood[#abood+1]=result ;
                       
                  elseif #abood>=1  then 
                         
                  --for s=1,#abood do
                             
                  if result~=abood[sthen            --and s==#abood then
                                
                  abood[#abood+1]=result ;
                               
                  elseif result==abood[sthen
                                
                  -- break 
                             
                  end
                         
                  --end
                     end
                  end

                  t2 
                  os.clock()
                  t3 t2 t1
                  tco 
                  Table.Count(abood);
                  Dialog.Message("Notice"tco.. "    "..t3); 
                  خالص تحياتى

                  تعليق


                  • #39
                    علشان أفهم كويس التعديل على كودى لابد من النوم الآن " فصلت خالص " لكن مبدئيا قمة الإمتياز التعديل الذى أدخلته أنت على كودى

                    تعليق


                    • #40
                      يبدو اننى انا الآخر بحاجة للنوم .. فقدت التركيز تماما
                      لا أظن ان الكود المعدل سيظهر نتائج صحيحة عند ارجاع حدود الحلقتين ل 6
                      لم استطع التعامل مع الكود دون فصل دالة البحث الى فانكشن مستقل

                      للحديث بقية
                      تصبح على خير

                      تعليق


                      • #41
                        مشكــــور جدا

                        طلبي بسيط للغاية أظهر النتائج التي حجزت بكودك في ملقك المفتوح
                        في Dialog.Message لا أريد الليست بوكس فبحكم أن الكود المطروح حجز العناصر في مصفوفة
                        أحببت أن أقرأها في ديالوج أنتظر الجواب إن أمكن عن طلبي البسيط

                        تعليق


                        • #42
                          ?? معقول ؟؟؟
                          هل تسأل عن كود الاظهار برسالة ديالوج بسيطة ؟؟

                          كود PHP:
                          -- Mohager Prevent Table Duplicate--
                          function 
                          Add_Unique(TableName,Element)
                          if  
                          TableName[Element]== nil then 
                            TableName
                          [Element] =  Element
                          end
                          end

                          MyTable 
                          = {}

                          for 
                          1,10000 do
                          rnd Math.Random(11000);
                          Add_Unique(MyTable,rnd)
                          end

                          msg 
                          Table.Concat(MyTable" - "1TABLE_ALL);
                          Dialog.Message("Notice"msg); 
                          الكود سيظهر لك 1000 عنصر دفعة واحدة برسالة فورية

                          تعليق


                          • #43
                            ما تفسيـــرك عند استعمال الكود
                            كود PHP:
                            function Add_Unique(TableName,Element)
                            if  
                            TableName[Element]== nil then 
                              TableName
                            [Element] =  Element
                            end
                            end

                            MyTable 
                            = {}

                            for 
                            1,do
                            rnd Math.Random(16);
                            Add_Unique(MyTable,rnd)
                            end

                            msg 
                            Table.Concat(MyTable" , "1TABLE_ALL);
                            Dialog.Message("Notice"msg); 
                            ظهور مصفوفات مهدورة تظهر عند تعدد المحاولات أي المصفوفة تكون خالية

                            تعليق


                            • #44
                              حقيقة الامر
                              لا اعرف

                              لكنى متأكد ان الأمر لا علاقة له بالكود
                              كود PHP:
                              -- Mohager Prevent Table Duplicate--
                              function 
                              Add_Unique(TableName,Element)
                              if  
                              TableName[Element]== nil then 
                                TableName
                              [Element] =  Element
                              end
                              end

                              MyTable 
                              = {}
                              ListBox.DeleteItem("ListBox1", -1);

                              for 
                              1,do
                              rnd Math.Random(16);
                              Add_Unique(MyTable,rnd)
                              end

                              msg 
                              Table.Concat(MyTable" , "1TABLE_ALL);
                              Dialog.Message("Notice"msg);  

                              for 
                              a,z in pairs(MyTable) do
                              ListBox.AddItem("ListBox1"z"");
                              end 
                              يبدو ان هناك bug فى دالة Table.Concat و تمت الاشارة اليها بموقع الشركة المنتجة منذ وقت بعيد

                              تعليق


                              • #45
                                المشاركة الأصلية بواسطة المـهاجر مشاهدة المشاركة
                                حقيقة الامر
                                لا اعرف

                                لكنى متأكد ان الأمر لا علاقة له بالكود
                                حاول التأكد من أجهزة أخرى لأني لا أحب القول بأن
                                الكود قد لا يجيب عن التمرين المطروح " ضمان عدم التكرار عند إدخال القيم للمصفوفات "
                                بل يهمل المصفوفة كاملة عند وجود التكرار و ينتقي فقط المصفوفات التي لا يوجد فيها تكرار حجب العنصر المختار
                                لاظهار ذلك " الليست " معاينة ماوددت الاشارة له

                                أتمنى أن يكون الخطأ عندي موفق و مشكور

                                تعليق

                                مواضيع تهمك

                                تقليص

                                المنتدى: القسم العام نشرت بواسطة: Reem2Rabeh الوقت: 04-23-2025 الساعة 04:27 PM
                                المنتدى: ضبط وتوكيد الجودة نشرت بواسطة: HeaD Master الوقت: 04-15-2025 الساعة 09:30 AM
                                المنتدى: التصنيع والانتاج نشرت بواسطة: HeaD Master الوقت: 04-11-2025 الساعة 01:08 PM
                                المنتدى: القسم العام نشرت بواسطة: نوال الخطيب الوقت: 03-19-2025 الساعة 03:07 AM
                                المنتدى: الكمبيوتر والإنترنت نشرت بواسطة: عوض السوداني الوقت: 03-18-2025 الساعة 07:22 AM
                                يعمل...
                                X