تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
مساعدة في كود عدم تكرار استدعاء نفس السؤال من المصفوفة
#1
السلام عليكم ورحمة الله وبركاته
اخوتي الاعزاء
الان قمت بوضع الاسئلة والاجاات في مصفوفة ولكن الاسئلة والاجابات تكرر فاحتاج كود لعدم تكرار استدعاء نفس السؤال مرفق الكود المستخدم
كود :
Dim Nran As New Random
Dim Qus(), Rep(), Rarr() As String
Dim Questions, Reponses, LabPos, picPos, TxtBox As New ArrayList
Qus = {" كم عدد الجيوب الأنفية في أنف الإنسان؟", "ما هو اسم اعلى جبل في قارة افريقيا؟", "ما هو ناتج ضرب 9و 2 ؟", "ما هو ناتج جمع 6و4؟",
     "شيء كلما زاد كلما أنقصنا منه؟", "كم عدد الأشهر الحرم في الإسلام؟", "كم عدد الخلفاء الراشدين؟", "ماذا يدعى الخال الوحيد لأولاد عمتك؟",
      "ما هو الشيء الذي يقوم برؤية كل شيء ولا يوجد به عيون؟", "عاصمة الهند هي؟ ", "حيوان يمكنه أن يخرج معدته إلى الخارج فمن هو؟",
      "من قام ببناء أبو الهول؟", "أول عملة إسلامية هي؟", "ما هو أكبر حيوان على وجه الأرض؟ ", "كم عدد الألوان في قوس قزح؟",
      "ما هي عاصمة مصر؟", "كم عدد الأرجل التي يمتلكها العنكبوت؟", "ما هي الفاكهة التي تحتوي على نسبة عالية من فيتامين سي؟", "ما هو الكوكب الذي يعرف بـ الكوكب الأحمر؟", "ما هو الحيوان الذي يستطيع الطيران ولكنه ليس طائرًا؟", "ما هي أسرع سمكة في المحيط؟", "كم عدد الأشهر التي تحتوي على 28 يومًا؟",
      "ما هو الحيوان الذي يطلق عليه لقب صديق الإنسان؟", "من هو اول رئيس جمهورية للجزائر؟", "مما يتكون فريق كرة السلة؟", "ما المدينة التي تسمى بمدينة الضباب؟", "ما الشئ الذي له عين ولا رأس له؟", "ما اسم شيخ المرسلين؟", "ما هي أكبر دولة عربية من حيث المساحة؟",
      "ثاني أكبر دولة عربية من حيث المساحة هي؟", "أصغر دولة عربية من حيث المساحة ما هي؟", "ما هو الكوكب التي يكون مميز باللون الازرق؟", "في أي مدينة توجد ساعة بيج بن الشهيرة؟", "شيء ينقص كلما يزيد؟", "دولة بها الكثير من الجزر وتكون في شكل هلال فما هو اسمها؟", "حيوان يدعى أم قشعم فمن هو؟",
      "مرض تسبب في موت نصف سكان قارة أوروبا فما هو؟", "أين تقع أطول شجرة في العالم؟", "كم عدد قارات العالم؟", "ما هو الحيوان الذي يُعتبر رمزًا للحكمة؟", "الكريم هو نقيض :", "الجزر هو ؟", "كلمة الضرير  تعني؟", "إحدي هذه الكلمات تتوج المنتصر:", "قد امام الفعل الماضي تفيد :",
      "إحدي هذه الدول ليست لها حدود مع العراق ؟", "حيوان يطلق عليه ملك الغابة هو", "مطرب عربي من اغنياته عندك بحرية؟", "العملة الموحدة لدول الإتحاد الأوربي هي ؟", "كم دقيقة في الساعة الواحدة", "من أدوات القصاب؟", "ممثلة لقبت بسندريلا الشاشة العربية؟", "ما هو نوع الشجرة الموجودة علي العلم اللبناني؟",
      "ماذا يطلق علي الممثل المشهور", "ما هي الرياضة التي يستخدم الاعب بها مضرب", "اين تقع منارة الحدباء", "لعبة عراقية شعبية شهيرة تمارس في ليالي شهر رمضان ويستخدم الاعبون بها المحبس فما هي", "وحدة الامبير هيا قياس لـــ ؟"}
Rep = {"8 * 6*7 * 9", "كليمنجارو * مزالة * غورونغوسا *آير", "18*20*14 * 16",
      "10 * 8 * 11 * 12", "الحفرة * البحر * العمر *النار", "4أشهر * 5أشهر*6أشهر* 3أشهر",
      "4 * 6 * 5 * 10", "والدك * عمك * خالك * جدك", "المرآة * الدبوس * المسمار * الماء",
      "نيودلهي * جيبور * كشمير * شيملا", "نجم البحر * الحبار * الجمبري * الجمبري", "خفرع * خوفو * من قرع * احمص",
      "الدينار الذهبي * الدينار الفضي * الجنيه*المليم", "الحوت الأزرق * الفيل * وحيد القرن * الزرافة", "7 * 8 * 6 * 10", "القاهرة * الإسكندرية * المنيا * اسوان",
     "8 * 10 * 7 * 6", "البرتقال * العنب *البطيخ * الموز", "المريخ*المشتري * الزهرة* عطارد", "الخفاش*النسر* النورس * النحلة", "سمكة الشراع*القرش*الحوت*قنديل البحر",
     "12*10*1*8", "الكلب*القطة*الحمار*البقرة", "أحمد بن بل*هواري بومدين*رابح بيطاط*اليامين زروال", "5*7*4*6", "لندن*ليدز*ليفربول*بريستول", "الابرة*المسمار*المشط*الخاتم",
     "نوح عليه السلام*اسماعيل عليه السلام*ابراهيم عليه السلام*يعقوب عليه السلام", "الجزائر*مصر*السعودية*المغرب", "السعودية*الجزائر*المغرب*السودان", "البحرين*الأردن*الامارات*تونس",
     "الأرض*عطارد*الزهرة*نبتون", "لندن*جنيف*بريستول*ليدز", "العمر*الحفرة*النار*البحر", "جزر القمر*جزر المالديف*جزر مالطا*جزيرة بنغهو", "أنثى النسر*ذكر النسر*اليمامة*النورس",
     "الطاعون*الايدذ*الحمي*الضغط", "كاليفورنيا*فرانكفورت*سياتل*تورونتو", "7*9*8*6", "البومة*اليمامة*الحمامة*النسر", "البخيل*الدليل*الذليل*العليل", "تراجع البحر*تبخر الماء*هدوء البحر* ارتفاع الموج",
     "الاعمي*الاصم*الابكم*الأعور", "الغار*المزمار*النار*الجلنار", "التأكيد*التسديد*التمديد*التهديد", "لبنان*سوريا*الأردن*السعودية", "الأسد*الارنب*الفأر*القط", "وديع الصافي*راغب علامة*عاصي الحلاني*جورج وسوف",
     "اليورو*الدولار*الفرنك*المارك", "60*20*70*10", "الطبر*المفك*المنشار*المطرقة", "سعاد حسني*نادية لطفي*مني زكي*يسرا", "الأرز*اللبلاب*الصنوبر*السرو", "نجم*شمس*قمر*هلال", "التنس*الجري*السباحة*كرة السلة",
     "الموصل*الانبار*واسط*صلاح الدين", "محيبس*جعاب*صكلة*شرطي حرامي", "التيار الكهربائي*الجهد الكهربائي*المقاومة الكهربائية*الحث الكهربائي"}
For Each item As String In Qus
   Questions.Add(item)
Next

For Each item As String In Rep
   Reponses.Add(item)
Next

' اختيار عشواي للاسئلة*-
Dim Nq = Nran.Next(0, Questions.Count)
lqus.Text = Questions(Nq)
Questions.RemoveAt(Nq)
' تقسيم الاجابات على الخاناات الارابع
Rarr = Reponses(Nq).ToString.Split("*")
lcurct.Text = Rarr(0)
ListBox2.Items.Clear()
ListBox2.Items.Add(Rarr(0))
ListBox2.Items.Add(Rarr(1))
ListBox2.Items.Add(Rarr(2))
ListBox2.Items.Add(Rarr(3))
Reponses.RemoveAt(Nq)
Dim random0 As New Random()
Dim shuffledAnswers = ListBox2.Items.Cast(Of String)().OrderBy(Function() random0.Next()).ToList()
ListBox2.Items.Clear()
ListBox2.Items.AddRange(shuffledAnswers.ToArray())

For i = 1 To 4
   Me.Controls(String.Format("lans{0}", i)).Text = ListBox2.Items(i - 1).ToString

Next
الرد }}}
تم الشكر بواسطة:
#2
هل يمكن توضيح الاكواد لكي اقوم بمحاولت تعديله علي الاثاثات الموجدة عندي 
الرد }}}
تم الشكر بواسطة:
#3
جرب هذا التصحيح

كود :
Dim Nran As New Random()
Dim Questions As New List(Of String)
Dim Reponses As New List(Of String)
Dim UsedQuestions As New List(Of String) ' قائمة لتخزين الأسئلة المستخدمة

Qus = {"كم عدد الجيوب الأنفية في أنف الإنسان؟", "ما هو اسم اعلى جبل في قارة افريقيا؟", "ما هو ناتج ضرب 9 و 2 ؟"}
Rep = {"8 * 6 * 7 * 9", "كليمنجارو * مزالة * غورونغوسا * آير", "18 * 20 * 14 * 16"}

Questions.AddRange(Qus)
Reponses.AddRange(Rep)

Sub LoadQuestion()
   If Questions.Count = 0 Then
       ' إعادة تعيين الأسئلة عند انتهاء القائمة
       Questions.AddRange(UsedQuestions)
       UsedQuestions.Clear()
   End If

   Dim Nq = Nran.Next(0, Questions.Count)
   lqus.Text = Questions(Nq)
   UsedQuestions.Add(Questions(Nq)) ' إضافة السؤال إلى القائمة المستخدمة
   Questions.RemoveAt(Nq) ' إزالة السؤال من القائمة

   ' تقسيم الإجابات
   Rarr = Reponses(Nq).Split("*")
   lcurct.Text = Rarr(0)

   ' ترتيب عشوائي للإجابات
   Dim shuffledAnswers = Rarr.OrderBy(Function() Nran.Next()).ToArray()

   For i = 1 To 4
       Me.Controls(String.Format("lans{0}", i)).Text = shuffledAnswers(i - 1)
   Next

   ' إزالة الإجابات من القائمة
   Reponses.RemoveAt(Nq)
End Sub

او هذا 

PHP كود :
Dim Nran As New Random
Dim Qus
(), Rep(), Rarr() As String
Dim Questions
Reponses As New List(Of String' تم تغيير ArrayList إلى List(Of String) لسهولة الإدارة
Dim LabPos, picPos, TxtBox As New ArrayList

تعريف الأسئلة والأجوبة
Qus 
= {"كم عدد الجيوب الأنفية في أنف الإنسان؟""ما هو اسم اعلى جبل في قارة افريقيا؟", ...} ' الأسئلة هنا
Rep = {"8 * 6*7 * 9", "كليمنجارو * مزالة * غورونغوسا *آير", ...} ' 
الأجوبة هنا

' تحميل الأسئلة والأجوبة في القوائم
Questions.AddRange(Qus)
Reponses.AddRange(Rep)

دالة لاختيار سؤال عشوائي
Sub ShowRandomQuestion
()
    ' التحقق من وجود أسئلة متبقية
    If Questions.Count = 0 Then
        MessageBox.Show("لا توجد أسئلة متبقية!")
        Return
    End If

    ' 
اختيار سؤال عشوائي
    Dim Nq 
Nran.Next(0Questions.Count)
    lqus.Text Questions(Nq)

    ' تقسيم الإجابات على الخانات الأربعة
    Rarr = Reponses(Nq).ToString.Split("*")
    lcurct.Text = Rarr(0)

    ' 
إضافة الإجابات إلى ListBox مع ترتيب عشوائي
    ListBox2
.Items.Clear()
    ListBox2.Items.Add(Rarr(0))
    ListBox2.Items.Add(Rarr(1))
    ListBox2.Items.Add(Rarr(2))
    ListBox2.Items.Add(Rarr(3))

    ' إزالة السؤال والإجابة من القوائم بعد عرضها
    Questions.RemoveAt(Nq)
    Reponses.RemoveAt(Nq)

    ' 
ترتيب الإجابات بشكل عشوائي
    Dim random0 
As New Random()
    Dim shuffledAnswers ListBox2.Items.Cast(Of String)().OrderBy(Function() random0.Next()).ToList()
    ListBox2.Items.Clear()
    ListBox2.Items.AddRange(shuffledAnswers.ToArray())

    ' عرض الإجابات في العناصر المناسبة
    For i = 1 To 4
        Me.Controls(String.Format("lans{0}", i)).Text = ListBox2.Items(i - 1).ToString
    Next
End Sub

استدعاء الدالة عند الحاجة (مثلاً عند النقر على زر)
Private 
Sub btnNextQuestion_Click(sender As ObjectAs EventArgsHandles btnNextQuestion.Click
    ShowRandomQuestion
()
End SubEnd Sub 
الرد }}}
تم الشكر بواسطة: fireswored1
#4
للاسف يتم حدوث تقرار بعد استخدام الكود ايضا
الرد }}}
تم الشكر بواسطة:
#5
طيب جرب هذا التعديل 

PHP كود :
Dim Nran As New Random()
Dim Questions As New List(Of String)
Dim Reponses As New List(Of String)

' تعريف الأسئلة والأجوبة
Dim Qus() As String = {"كم عدد الجيوب الأنفية في أنف الإنسان؟", "ما هو اسم اعلى جبل في قارة افريقيا؟"}
Dim Rep() As String = {"8 * 6*7 * 9", "كليمنجارو * مزالة * غورونغوسا *آير"}

تحميل الأسئلة والأجوبة في القوائم
Questions
.AddRange(Qus)
Reponses.AddRange(Rep)

' دالة لاختيار سؤال عشوائي
Sub ShowRandomQuestion()
    ' 
التحقق من وجود أسئلة متبقية
    If Questions
.Count 0 Then
        MessageBox
.Show("لا توجد أسئلة متبقية!")
 
       Return
    End 
If

 
   ' اختيار سؤال عشوائي
    Dim Nq As Integer = Nran.Next(0, Questions.Count)

    ' 
استخراج السؤال والإجابات قبل حذفها
    Dim selectedQuestion 
As String Questions(Nq)
 
   Dim selectedAnswers As String() = Reponses(Nq).Split("*")

 
   ' حذف السؤال والإجابة من القوائم لتجنب التكرار
    Questions.RemoveAt(Nq)
    Reponses.RemoveAt(Nq)

    ' 
تعيين السؤال في العنصر المخصص له
    lqus
.Text selectedQuestion
    lcurct
.Text selectedAnswers(0)

 
   ' إضافة الإجابات إلى ListBox
    Dim shuffledAnswers = selectedAnswers.OrderBy(Function() Nran.Next()).ToArray()
    ListBox2.Items.Clear()
    ListBox2.Items.AddRange(shuffledAnswers)

    ' 
عرض الإجابات في العناصر المناسبة
    For i 
As Integer 0 To 3
        Me
.Controls($"lans{i + 1}").Text shuffledAnswers(i)
 
   Next
End Sub

' استدعاء الدالة عند الحاجة (مثلاً عند النقر على زر)
Private Sub btnNextQuestion_Click(sender As Object, e As EventArgs) Handles btnNextQuestion.Click
    ShowRandomQuestion()
End Sub 
الرد }}}
تم الشكر بواسطة:
#6
للاسف بيتكرروا برده بس عندي اقتراح لو عملنا مصفوفة انتجر وحطينا فيها الارقام مثلا لو يوجد 20 سؤال نضع من 0 الي 19 ونضع هذه المصفوفة في ليست بوكس كما فعلنا في ليست بوكس الاجبات بشكل عشوائي ونستدعي الكولم 0 في كل مرة بدل الراندوم وبعدها نقوم بمسحه من اليست بوكس وتكرر هذه المرة حتي تكون الليست بوكس لا يوجد بها بيانات ثم تملئ مره اخر وهكذا هل يمكن فعل هذا الكود
الرد }}}
تم الشكر بواسطة:



التنقل السريع :


يقوم بقرائة الموضوع: