Dua kumpulan data string perlu membandingkan data yang sama dan menambahkan nilainya untuk membentuk data string baru a1=sp2=20;sp1=34;
a2=sp3=2;sp2=3;sp1=4;
Dua kumpulan data string. Tambahkan nilai data yang sama dalam string untuk mendapatkan kumpulan data baru.
Artinya, sp3=2;sp2=23;sp1=38
(PS Aplikasi sederhana: jumlah asli produk 2 sebanyak 20 buah, jumlah asli produk 1 sebanyak 34 buah, baru dibeli atau baru terjual 3 buah produk 2, 4 buah produk 1, dst disimulasikan untuk menghitung volume pembelian dan volume penjualan serta persediaan, sistem pembelian, penjualan dan persediaan kecil dapat menggunakan metode ini)
Lalu bagaimana cara membandingkan dan menggabungkan dua kumpulan data string dengan data yang sama?
Pertama, sambungkan dan gabungkan dua set data string
a3=a1&a2
Maka a3=sp2=20;sp1=34;sp3=2;sp2=3;sp1=4;
Kedua, tambahkan data yang sama di a3
Solusi utama di sini adalah bagaimana menemukan data yang sama
Pertama-tama, karena sekarang a3 terdiri dari sp2, sp1, sp3, sp2 dan sp1, maka perlu mencari sp2 dan sp1 yang sama secara terpisah lalu menjumlahkan nilainya.
Fungsi split by split; dapatkan setiap bagian data dan nilai untuk pemisah.
Artinya, s_array = split(a3,;) melalui loop i = 0 hingga ubound(s_array) kita bisa mendapatkan data dan nilai individual.
Format setiap item mirip dengan sp2=20. Sp2 perlu diekstraksi untuk membandingkannya dengan data dalam kelompok yang sama, sehingga diperlukan fungsi independen untuk ekstraksi.
Fungsi getSPName(sp)
getSPName = membagi(sp,=)(0)
Fungsi Akhir
Fungsi getSPNum(sp)
getSPNum = membagi(sp,=)(1)
fungsi akhir
Dapatkan nama data sebelum = dan nilai data setelah = masing-masing.
Kedua, setiap bagian data didekomposisi, yaitu bagaimana mencari nama data yang sama.
Kita asumsikan proses ini, pertama-tama ekstrak elemen pertama dalam array a3, bandingkan dengan data sebelum membagi elemen pertama, dan tambahkan jika sama.
s_array = terbagi(a3,;)
untuk i = 0 hingga ubound(s_array)
untuk j=i+1 hingga ubound(s_array)
jika getSPName(s_array(i)) = getSPName(s_array(j)) maka
Angka = Angka + Cint(getSPNum(s_array(j)))
berakhir jika
Berikutnya
Berikutnya
Kami telah memperoleh nilai akhir dan dapat menetapkan nilai tersebut ke array dinamis baru kapan saja untuk membentuk array data gabungan akhir.
redim Pertahankan hasil(p)
hasil(p) = getSPName(s_array(i)) & = & Angka
Sekarang
s_array = terbagi(a3,;)
untuk i = 0 hingga ubound(s_array)
untuk j=i+1 hingga ubound(s_array)
jika getSPName(s_array(i)) = getSPName(s_array(j)) maka
Angka = Angka + Cint(getSPNum(s_array(j)))
berakhir jika
Berikutnya
redim Pertahankan hasil(p)
hasil(p) = getSPName(s_array(i)) & = & Angka
p=p+1
Berikutnya
Ini pasti akan menghadapi situasi seperti ini: ketika elemen berikutnya dalam array a3 selalu dioperasikan dengan elemen yang sama dibandingkan sebelumnya, maka elemen ini tidak dapat dimasukkan ke dalam untuk i = 0 hingga ubound(s_array ) dalam result(p) = getSPName(s_array(i)) & = & Angka array dinamis.
Bagaimana mengatasi masalah tidak lagi membandingkan unsur-unsur yang sudah dibandingkan
Kita harus menandai elemen yang telah dibandingkan. Misalnya, pada array a3 (a3=sp2=20;sp1=34;sp3=2;sp2=3;sp1=4;) setelah mengeluarkan sp2=20, perbandingannya operasi akan menjadi A sp2=3, saat ini, jumlah elemen array sp2=3 akan ditandai setelah operasi perbandingan, dan elemen ini tidak akan dihitung dalam perbandingan loop berikutnya.
s_array = terbagi(a3,;)
untuk i = 0 hingga ubound(s_array)
untuk j=i+1 hingga ubound(s_array)
jika getSPName(s_array(i)) = getSPName(s_array(j)) maka
Angka = Angka + Cint(getSPNum(s_array(j)))
berakhir jika
redim Pertahankan ID(q)
ID(q) = j
q = q + 1
Berikutnya
redim Pertahankan hasil(p)
hasil(p) = getSPName(s_array(i)) & = & Angka
p=p+1
Berikutnya
Definisi ID(q)=j adalah menandai elemen yang saat ini identik dan menetapkannya ke array dinamis id(q). q didefinisikan sebagai 0 secara default, dan q=q+1 diulang lagi.
Kemudian dengan tanda ini kita bisa selektif memilih untuk membandingkan dan mengakumulasi.
mendefinisikan fungsi
fungsiIsInID(j)
redup
IsInID = salah
untuk setiap x di ID
jika x = j maka
IsInID = benar
fungsi keluar
Berakhir jika
Berikutnya
fungsi akhir
Fungsi utamanya adalah
fungsi mainhb
s_array = terbagi(s,;)
untuk i = 0 hingga ubound(s_array)
jika bukan IsInID(i) maka
Angka = getSPNum(s_array(i))
untuk j=i+1 hingga ubound(s_array)
jika getSPName(s_array(i)) = getSPName(s_array(j)) maka
Angka = Angka + Cint(getSPNum(s_array(j)))
redim Pertahankan ID(q)
ID(q) = j
q = q + 1
berakhir jika
Berikutnya
redim Pertahankan hasil(p)
hasil(p) = getSPName(s_array(i)) & = & Angka
hal = hal + 1
berakhir jika
Berikutnya
untuk setiap x hasilnya
mainhb=mainhb&x&;
Berikutnya
fungsi akhir
Fungsi keseluruhannya adalah
<%
hasil redup()
redupID()
redup p , q , Bilangan
p=0
q= 0
Angka = 0
redim Pertahankan ID(q)
ID(q) =
s = sp4=33;sp2=20;sp1=34;sp3=2;sp2=3;sp4=4;
s = kiri(s,len(s)-1)
respon.tulis mainhb(s)
fungsi mainhb
s_array = terbagi(s,;)
untuk i = 0 hingga ubound(s_array)
jika bukan IsInID(i) maka
Angka = getSPNum(s_array(i))
untuk j=i+1 hingga ubound(s_array)
jika getSPName(s_array(i)) = getSPName(s_array(j)) maka
Angka = Angka + Cint(getSPNum(s_array(j)))
redim Pertahankan ID(q)
ID(q) = j
q = q + 1
berakhir jika
Berikutnya
redim Pertahankan hasil(p)
hasil(p) = getSPName(s_array(i)) & = & Angka
hal = hal + 1
berakhir jika
'Bilangan = 0
Berikutnya
untuk setiap x hasilnya
mainhb=mainhb&x&;
Berikutnya
fungsi akhir
Fungsi getSPName(sp)
dapatkanSPName = terbagi(sp,=)(0)
Fungsi Akhir
Fungsi getSPNum(sp)
getSPNum = membagi(sp,=)(1)
fungsi akhir
fungsiIsInID(j)
redup
IsInID = salah
untuk setiap x di ID
jika x = j maka
IsInID = benar
fungsi keluar
Berakhir jika
Berikutnya
fungsi akhir
%>