قمت بعمل برنامج يرسم نقاط على الشاشة ، وحتى لا أدخل في تفاصيل غير مهمة ، لنفرض باختصار أن لدينا أربع نقاط:
W.X,Y,Z داخل مصفوفة تسمى مصفوفة النقاط Point
هذا البرنامج عن طريق ألغورذيم قمت ببرمجته يقوم باختيار مجموعة من النقاط كـ center point
ولو فرصنا أن لدينا two center points(x.y) ولنفرض أن لهما نقاطهما بمعني:
x=x,w
y=y,z
برنامجي يقوم كل مرة بحساب الcenter points وما تحتويه من نقاط، باستخدام ألغورذيم خاص، ويتوفق فقط عندما تتكرر الcenter points وتتكرر معهما نقاطهما مرتين متتاليتين
أي..
في اللوب الأولى نحصل على:
x=x,w
y=y,z
واللوب الثانية:
x=x,w
y=y,z
أي لا يتغير شي!
وقياسا على ذلك وعلى حسب عدد النقاط قد يكون لدينا أكثر من center المهم أن يتكرر all center with all point في دورتين متتالين
المشكلة إني حفظت الcenter points بنقاطهما في متغير من نوع string
وأريد تحويلة إلى مصفوفة من بعدين/ البعد الأول يمثل الcenter والبعد الثاني يمثل نقاطه
أجهل طريقة التعامل مع المصفوفات
كما أجهل طريقة الاستدعاء للدالة التي ترجع مصفوفة
واحتاج لمساعدة عاجلة لأني هذا الكود يتوقف عليه تطوير اللالغورذيم ولي فترة أحاول فيه ومتعطلة!
هذا الكود الذي كتبته ولكني استخدم string وأجمع جميع الcenters بالنقاط في string واحد
Public Function makcenter() As String Dim point As classpoint Dim i As Integer str= "" For Each point In plist If point.iscenter = True Then str&= point.pGroup.center For i = 0 To point.pGroup.elements.Length - 1 str&= point.pGroup.elements(i) Next str&= vbCrLf End If Next MessageBox.Show(str) Return str End Function
وكود الاستدعاءد
Dim alg As New classalg str2 = alg.makcenter() If strpoint = str2 Then flag = False Else strpoint = str2 End If Loop While flag
علما بإني عرفت :
Private strpoint As String = ""
أتمنى أن أجد لديكم الوقت لمساعدتي
ملاحظة مهمة:
عند المساواة بين المصفوفتين فلا يهم ترتيب العنصر
مثلا:
x=x.y
هي نفسها
x=y,x
.