تحتاج مجموعتان من بيانات السلسلة إلى مقارنة نفس البيانات وإضافة قيمها لتشكيل بيانات سلسلة جديدة a1=sp2=20;sp1=34;
a2=sp3=2;sp2=3;sp1=4;
مجموعتان من بيانات السلسلة. أضف نفس قيم البيانات في السلسلة للحصول على مجموعة جديدة من البيانات.
أي أن sp3=2;sp2=23;sp1=38
(ملاحظة: تطبيق بسيط: الكمية الأصلية للمنتج 2 هي 20 قطعة، والكمية الأصلية للمنتج 1 هي 34 قطعة، وتم شراء 3 قطع من المنتج 2، و4 قطع من المنتج 1، وما إلى ذلك، لحساب حجم الشراء وحجم المبيعات والمخزون، يمكن لنظام الشراء والمبيعات والمخزون الصغير استخدام هذه الطريقة)
فكيف يمكن مقارنة ودمج مجموعتين من بيانات السلسلة بنفس البيانات؟
أولاً، قم بتوصيل مجموعتي بيانات السلسلة ودمجهما
a3=a1&a2
ثم a3=sp2=20;sp1=34;sp3=2;sp2=3;sp1=4;
ثانيا، أضف نفس البيانات في a3
الحل الرئيسي هنا هو كيفية العثور على نفس البيانات
أولاً، نظرًا لأن a3 يتكون الآن من sp2 وsp1 وsp3 وsp2 وsp1، فمن الضروري العثور على نفس sp2 وsp1 بشكل منفصل ثم إضافة القيم.
تقسيم بواسطة وظيفة الانقسام؛ الحصول على كل جزء من البيانات وقيمة الفاصل.
وهذا يعني أن s_array = Split(a3,;) من خلال حلقة i = 0 إلى حلقة ubound(s_array) يمكننا الحصول على البيانات والقيم الفردية.
تنسيق كل عنصر مشابه لـ sp2=20، ويجب استخراجه لمقارنته بالبيانات الموجودة في نفس المجموعة، لذلك هناك حاجة إلى وظيفة مستقلة للاستخراج.
الدالة getSPName(sp)
getSPName = تقسيم (sp,=)(0)
وظيفة النهاية
الدالة getSPNum(sp)
getSPNum = تقسيم (sp,=)(1)
وظيفة النهاية
احصل على اسم البيانات قبل = وقيمة البيانات بعد = على التوالي.
ثانيًا، يتم تحليل كل جزء من البيانات، أي كيفية العثور على نفس اسم البيانات.
لنفترض هذه العملية، نقوم أولاً باستخراج العنصر الأول في المصفوفة a3، ومقارنتها بالبيانات قبل تقسيم العنصر الأول، وإضافتها إذا كانت متماثلة.
s_array = انقسام (a3،؛)
لأني = 0 إلى ubound(s_array)
من أجل j=i+1 إلى ubound(s_array)
إذا كان getSPName(s_array(i)) = getSPName(s_array(j)) إذن
الأعداد = الأعداد + السنت(getSPNum(s_array(j)))
نهاية إذا
التالي
التالي
لقد حصلنا على القيمة النهائية ويمكننا تعيين القيمة لمصفوفة ديناميكية جديدة في أي وقت لتشكيل مصفوفة البيانات المدمجة النهائية.
تخليص الحفاظ على النتيجة(ع)
result(p) = getSPName(s_array(i)) & = & Nums
الآن
s_array = انقسام (a3،؛)
لأني = 0 إلى ubound(s_array)
من أجل j=i+1 إلى ubound(s_array)
إذا كان getSPName(s_array(i)) = getSPName(s_array(j)) إذن
الأعداد = الأعداد + السنت(getSPNum(s_array(j)))
نهاية إذا
التالي
تخليص الحفاظ على النتيجة(ع)
result(p) = getSPName(s_array(i)) & = & Nums
ع=ع+1
التالي
لا بد أن يواجه هذا موقفًا مثل هذا: عندما يتم تشغيل عنصر لاحق في مصفوفة a3 دائمًا بنفس العنصر الذي تمت مقارنته من قبل، لذلك لا يمكن تضمين هذا العنصر في i = 0 إلى ubound(s_array ) ضمن النتيجة(p) = getSPName(s_array(i)) & = & المصفوفة الديناميكية Nums.
كيفية حل مشكلة عدم مقارنة العناصر التي تمت مقارنتها بالفعل
يجب علينا وضع علامة على العناصر التي تمت مقارنتها، على سبيل المثال، في المصفوفة a3 (a3=sp2=20;sp1=34;sp3=2;sp2=3;sp1=4;) بعد إخراج sp2=20، يتم إجراء المقارنة. ستكون العملية A sp2 = 3، في هذا الوقت، سيتم وضع علامة على رقم عنصر الصفيف sp2 = 3 بعد عملية المقارنة، ولن يتم احتساب هذا العنصر في مقارنة الحلقة التالية.
s_array = انقسام (a3،؛)
لأني = 0 إلى ubound(s_array)
من أجل j=i+1 إلى ubound(s_array)
إذا كان getSPName(s_array(i)) = getSPName(s_array(j)) إذن
الأعداد = الأعداد + السنت(getSPNum(s_array(j)))
نهاية إذا
استرداد معرف الاحتفاظ (ف)
معرف (ف) = ي
ف = ف + 1
التالي
تخليص الحفاظ على النتيجة(ع)
result(p) = getSPName(s_array(i)) & = & Nums
ع=ع+1
التالي
تعريف ID(q)=j هو تحديد العنصر المتطابق حاليًا وتعيينه لمعرف الصفيف الديناميكي (q يتم تعريفه على أنه 0 افتراضيًا، ويتم تكرار q=q+1 مرة أخرى.
ثم باستخدام هذه العلامة، يمكننا اختيار المقارنة والتراكم بشكل انتقائي.
تحديد الوظيفة
دالةIsInID(ي)
ديمكس
IsInID = خطأ
لكل x في المعرف
إذا س = ي ثم
IsInID = صحيح
وظيفة الخروج
انتهي إذا
التالي
وظيفة النهاية
وتتمثل المهمة الرئيسية
الوظيفة الرئيسية
s_array = تقسيم (ق،؛)
لأني = 0 إلى ubound(s_array)
إذا لم يكن IsInID(i) إذن
الأعداد = getSPNum(s_array(i))
من أجل j=i+1 إلى ubound(s_array)
إذا كان getSPName(s_array(i)) = getSPName(s_array(j)) إذن
الأعداد = الأعداد + سينت (getSPNum(s_array(ي)))
استرداد معرف الاحتفاظ (ف)
معرف (ف) = ي
ف = ف + 1
نهاية إذا
التالي
تخليص الحفاظ على النتيجة(ع)
result(p) = getSPName(s_array(i)) & = & Nums
ع = ع + 1
نهاية إذا
التالي
لكل x في النتيجة
mainhb=mainhb&x&;
التالي
وظيفة النهاية
الوظيفة الشاملة هي
<%
نتيجة خافتة()
معرف خافت ()
خافت ف , أرقام
ع = 0
س= 0
الأعداد = 0
استرداد معرف الاحتفاظ (ف)
معرف (ف) =
s = sp4=33;sp2=20;sp1=34;sp3=2;sp2=3;sp4=4;
ق = اليسار (ق، لين (ق) -1)
استجابة.كتابة mainhb(s)
الوظيفة الرئيسية
s_array = تقسيم (ق،؛)
لأني = 0 إلى ubound(s_array)
إذا لم يكن IsInID(i) إذن
الأعداد = getSPNum(s_array(i))
من أجل j=i+1 إلى ubound(s_array)
إذا كان getSPName(s_array(i)) = getSPName(s_array(j)) إذن
الأعداد = الأعداد + سينت (getSPNum(s_array(ي)))
استرداد معرف الاحتفاظ (ف)
المعرف (ف) = ي
ف = ف + 1
نهاية إذا
التالي
تخليص الحفاظ على النتيجة(ع)
result(p) = getSPName(s_array(i)) & = & Nums
ع = ع + 1
نهاية إذا
'الأعداد = 0
التالي
لكل x في النتيجة
mainhb=mainhb&x&;
التالي
وظيفة النهاية
الدالة getSPName(sp)
getSPName = تقسيم (sp,=)(0)
وظيفة النهاية
الدالة getSPNum(sp)
getSPNum = تقسيم (sp,=)(1)
وظيفة النهاية
دالةIsInID(ي)
ديمكس
IsInID = خطأ
لكل x في المعرف
إذا س = ي ثم
IsInID = صحيح
وظيفة الخروج
انتهي إذا
التالي
وظيفة النهاية
%>