ข้อมูลสตริงสองชุดจำเป็นต้องเปรียบเทียบข้อมูลเดียวกันและเพิ่มค่าเพื่อสร้างข้อมูลสตริงใหม่ 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 จำเป็นต้องแยก Sp2 เพื่อเปรียบเทียบกับข้อมูลในกลุ่มเดียวกัน ดังนั้นจึงจำเป็นต้องมีฟังก์ชันอิสระในการแยก
ฟังก์ชัน getSPName(sp)
getSPName = แยก (sp,=)(0)
สิ้นสุดฟังก์ชัน
ฟังก์ชัน getSPNum(sp)
getSPNum = แยก(sp,=)(1)
ฟังก์ชั่นสิ้นสุด
รับชื่อข้อมูลก่อน = และค่าข้อมูลหลัง = ตามลำดับ
ประการที่สอง ข้อมูลแต่ละชิ้นจะถูกแยกย่อย นั่นคือ วิธีค้นหาชื่อข้อมูลเดียวกัน
เราถือว่ากระบวนการนี้ อันดับแรกแยกองค์ประกอบแรกในอาร์เรย์ a3 แล้วเปรียบเทียบกับข้อมูลก่อนที่จะแบ่งองค์ประกอบแรก และเพิ่มเข้าไปหากเหมือนกัน
s_array = แยก(a3,;)
สำหรับ i = 0 ถึง ubound (s_array)
สำหรับ j=i+1 ถึง ubound(s_array)
ถ้า getSPName(s_array(i)) = getSPName(s_array(j)) แล้ว
Nums = Nums + Cint(getSPNum(s_array(j)))
สิ้นสุดถ้า
ต่อไป
ต่อไป
เราได้รับค่าสุดท้ายแล้วและสามารถกำหนดค่าให้กับอาร์เรย์ไดนามิกใหม่ได้ตลอดเวลาเพื่อสร้างอาร์เรย์ข้อมูลรวมขั้นสุดท้าย
redim รักษาผลลัพธ์(p)
ผลลัพธ์ (p) = getSPName (s_array (i)) & = & Nums
ตอนนี้
s_array = แยก(a3,;)
สำหรับ i = 0 ถึง ubound (s_array)
สำหรับ j=i+1 ถึง ubound(s_array)
ถ้า getSPName(s_array(i)) = getSPName(s_array(j)) แล้ว
Nums = Nums + Cint(getSPNum(s_array(j)))
สิ้นสุดถ้า
ต่อไป
redim รักษาผลลัพธ์(p)
ผลลัพธ์ (p) = getSPName (s_array (i)) & = & Nums
พี=พี+1
ต่อไป
สิ่งนี้จะต้องเผชิญกับสถานการณ์เช่นนี้: เมื่อองค์ประกอบที่ตามมาในอาร์เรย์ a3 ถูกดำเนินการกับองค์ประกอบเดียวกันเมื่อเปรียบเทียบกับก่อนหน้านี้เสมอ ดังนั้นองค์ประกอบนี้จึงไม่สามารถรวมไว้ใน for i = 0 ถึง ubound(s_array ) ภายใน result(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,;)
สำหรับ i = 0 ถึง ubound (s_array)
สำหรับ j=i+1 ถึง ubound(s_array)
ถ้า getSPName(s_array(i)) = getSPName(s_array(j)) แล้ว
Nums = Nums + Cint(getSPNum(s_array(j)))
สิ้นสุดถ้า
Redim รักษา ID(q)
ไอดี(คิว) = เจ
คิว = คิว + 1
ต่อไป
redim รักษาผลลัพธ์(p)
ผลลัพธ์ (p) = getSPName (s_array (i)) & = & Nums
พี=พี+1
ต่อไป
คำจำกัดความของ ID(q)=j คือการทำเครื่องหมายองค์ประกอบที่เหมือนกันในปัจจุบันและกำหนดให้กับอาร์เรย์แบบไดนามิก id(q) q ถูกกำหนดให้เป็น 0 โดยค่าเริ่มต้น และ q=q+1 จะถูกวนซ้ำอีกครั้ง
จากนั้นด้วยเครื่องหมายนี้เราสามารถเลือกเปรียบเทียบและสะสมได้
กำหนดฟังก์ชัน
ฟังก์ชั่นIsInID(j)
ดิมเอ็กซ์
IsInID = เท็จ
สำหรับแต่ละ x ใน ID
ถ้า x = j แล้ว
IsInID = จริง
ฟังก์ชั่นทางออก
จบถ้า
ต่อไป
ฟังก์ชั่นสิ้นสุด
หน้าที่หลักคือ
ฟังก์ชั่น mainhb
s_array = แยก (s,;)
สำหรับ i = 0 ถึง ubound (s_array)
ถ้าไม่ใช่ IsInID(i) แล้ว
ตัวเลข = getSPNum(s_array(i))
สำหรับ j=i+1 ถึง ubound(s_array)
ถ้า getSPName(s_array(i)) = getSPName(s_array(j)) แล้ว
Nums = Nums + Cint(getSPNum(s_array(j)))
Redim รักษา ID(q)
ไอดี(คิว) = เจ
คิว = คิว + 1
สิ้นสุดถ้า
ต่อไป
redim รักษาผลลัพธ์(p)
ผลลัพธ์ (p) = getSPName (s_array (i)) & = & Nums
พี = พี + 1
สิ้นสุดถ้า
ต่อไป
สำหรับผลลัพธ์ x แต่ละตัว
mainhb=mainhb&x&;
ต่อไป
ฟังก์ชั่นสิ้นสุด
ฟังก์ชั่นโดยรวมก็คือ
-
ผลลัพธ์สลัว()
รหัสสลัว()
สลัว p , q , ตัวเลข
พี=0
ถาม= 0
ตัวเลข = 0
Redim รักษา ID(q)
ไอดี(คิว) =
s = sp4=33;sp2=20;sp1=34;sp3=2;sp2=3;sp4=4;
s = ซ้าย (s, len (s) -1)
การตอบสนองเขียน mainhb
ฟังก์ชั่น mainhb
s_array = แยก (s,;)
สำหรับ i = 0 ถึง ubound (s_array)
ถ้าไม่ใช่ IsInID(i) แล้ว
ตัวเลข = getSPNum(s_array(i))
สำหรับ j=i+1 ถึง ubound(s_array)
ถ้า getSPName(s_array(i)) = getSPName(s_array(j)) แล้ว
Nums = Nums + Cint(getSPNum(s_array(j)))
Redim รักษา ID(q)
ไอดี(คิว) = เจ
คิว = คิว + 1
สิ้นสุดถ้า
ต่อไป
redim รักษาผลลัพธ์(p)
ผลลัพธ์ (p) = getSPName (s_array (i)) & = & Nums
พี = พี + 1
สิ้นสุดถ้า
'ตัวเลข = 0
ต่อไป
สำหรับผลลัพธ์ x แต่ละตัว
mainhb=mainhb&x&;
ต่อไป
ฟังก์ชั่นสิ้นสุด
ฟังก์ชัน getSPName(sp)
getSPName = แยก (sp,=)(0)
สิ้นสุดฟังก์ชัน
ฟังก์ชัน getSPNum(sp)
getSPNum = แยก(sp,=)(1)
ฟังก์ชั่นสิ้นสุด
ฟังก์ชั่นIsInID(j)
ดิมเอ็กซ์
IsInID = เท็จ
สำหรับแต่ละ x ใน ID
ถ้า x = j แล้ว
IsInID = จริง
ฟังก์ชั่นทางออก
จบถ้า
ต่อไป
ฟังก์ชั่นสิ้นสุด
-