منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : طلب خوارزمية
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
سلام اخوان ارجو ان تكونوا في تمام الصحة والعافية .

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

المطلوب موجود في الصورة اسفله ارجو ان يكون واضحا

سؤالك غير واضح تماما خصوصا في موضوع انقطاع Line
عموما لكي تبني خوارزمية لأي شئ
يجب أن يكون لديك أساس قوي لكيفية تمرير البيانات حتي تستطيع التعامل معها لاحقا بحيث تسترد البيانات او جزء من هذه البيانات ومن ثم تتعامل معها

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


PHP كود :
Public Class Line

    Public Property ID 
As String
    Public Property Low 
As Integer
    Public Property High 
As Integer

    Private Iterator 
Function GetEnumerator() As IEnumerable(Of Object)
 
       Yield Me.ID
        Yield Me
.Low
        Yield Me
.High
        Return
    End 
Function

 
   Public Overrides Function ToString() As String
        Dim result 
As String String.Empty
 
       Dim indent As Char " "c
        Dim i 
As Integer 0
        While i 
GetEnumerator.Count
            Dim obj 
As Object GetEnumerator(i)
 
           result += obj.ToString
            result 
+= indent
            i 
+= 1

        End 
While
 
       Return result.TrimEnd(indent)
 
   End Function

End Class 

كيف تستخدم الكلاس

PHP كود :
Dim line As New Line With {.ID "T007", .Low 122, .High 200

ويمكن استردا البيانات من الكلاس بشكل مباشر من خلال كل Property او كالأتي
PHP كود :
Dim values As String() = line.ToString().Split(" "c)
 
       Dim s As String values(0)
 
       Dim low As Integer CInt(values(1))
 
       Dim high As Integer CInt(values(2)) 

كل ما عليك بعد ذلك هو ان تتعامل مع مجموعات أو مصفوفات من Line
الفكرة كأنك بتبني صفوف مثلما يحدث في DataTable مثلا
شكرا لك اخي على تفاعلك الدائم معنا
رغم مجهودك الرائع معنا لكني صراحة لم افهم ردك و هذا لمستوي الضعيف في البرمجة عذا لك اخي 
اعتقد ان الموضوع ليس بالاشكال الكبير الذي يحتاج اكواد كثيرة و اظن اني لم اقم بايصال الفكرة بشكبل جيد

------------- اعيد شرح المطلوب----------------

عندي ملف تكست هذا الملف يحتوي على مجموعة من الاحداثيات لنقط لخطوط LINE مختلفة هذه النقط تكون عادة  بترقيم  ID متتابع لكل LINE
في بعض الحالة تكون هنالك قفزة او انقطاع اي ان الترقيم يقفز بعض القيم

ما اريده انه عند ادراج الملف الى البرنامج بضغطة على البوتون يعطني ملف تاكست جديد يحتوي كل LINE اين يبدا فيها الترقيم والى اين ينتهي اي اكبر واصغر ID

في حالة LINE التي يوجد بها انقطاع و قفزة تظهر هته اللين هلى جزئين
اول قيمة -----------اكبر قيمة قبل الانقطاع
اصغر قيمة بعد الانقطاع ----- اكبر قيمة بعد الانقطاع

الشرح في الصورة اعلاه
مثال عن الملف المراد ادراجه والملف المراد استخراجه في المرفقات
كما سبق و قلت لك أنت تحتاج الي استراتيجية لقراءة المدخلات و إن كنت لا تريد استخدام كلاس يمكنك تنفيذ الأتي
تقرأ البيانات علي شكل Genric Dictionary و تحديدا علي شكل ..... Dictionary (Of Integer, String)
ثم تقوم بتحويله الي محموعات أو مصفوفات بخيث مثلا T005 تكون مصفوفة رقمية و T006 تكون مجموعة رقمية و هكذا

شرط التقسيم الي مجموعات هو أن المفتاح مختلف عن ما يليه في القيمة
كأنك تقارن T005 مع ما يليه من قيمة و هكذا

في النهاية سيكون لديك نوعان من المجموعات أو المصفوفات


المجموعة الأولي
وفيها  الرقم المسلسل يزيد بمعدل منتظم =1 و غالبا ستجد هذا في المجموعات T005 و T007 و T008  و T009
غالبا هنا ليس لديك مشكلة فقط ستقرأ اعلي قيمة و أقل قيمة و بذلك تحصل علي مرادك

المجوعة الثانية
و هي  الأصعب قليلا حيث أن الرقم المسلسل سيقفز و يزيد بمعدل أكبر من 1
وهنا عليك ان تقسم المجموعة T006 تحديدا الي مصفوفتان
و الشرط الذي يجب استخدامه في تقسيم المجموعة T006 هو أن الرقم الذي تقرأه يكون الفارق بينه و بين ما بعده أكبر من 1

هذا هو تفسيري لما فهمته من سؤالك

شئ أخير
المبرمج الذي يتعامل مع بيانات طبواغرافية
لا يصح أن يقول علي تفسه مستواي ضعيف

تقبل تخياتي
شكرا لك اخي silverlight على مجهودك معنا دائما انت رائع في تعليقاتك ساعمل بنصائحك 
جزاك الله الف خير