Posted by : Me
Sabtu, 23 Mei 2015
Kembali lagi, kali ini saya akan membahas mengenai submatriks lagi. Tidak seperti program sebelumnya, program kali ini dibuat untuk mencari apakah suatu matriks B yang di-input oleh pengguna merupakan submatriks dari matriks A yang juga di-input oleh pengguna. Idenya adalah bagaimana cara membuat program memeriksa semua elemen matriks A dan matriks B dengan mencari nilai-nilai yang sama, namun sesuai dengan urutan tiap-tiap elemen. Contohnya saat di-input-kan dua buah matriks seperti di bawah ini,
maka program akan memeriksa kesamaan elemen aij dengan bkl apakah terdapat empat elemen yang sama yang berurutan. Jika iya, program akan menampilkan bahwa matriks B adalah submatriks dari matriks A.
Berikut ini source code program yang saya modifikasi berdasarkan program yang ditulis dalam bahasa Java yang saya dapatkan di Stackoverflow, program ini dibuat dengan array konstan, atau tidak meminta input dari pengguna, jika ingin diubah bisa saja.:
Jika masih bingung, silakan ditanyakan atau dicoba pahami terlebih dahulu ^_^. Ciao
maka program akan memeriksa kesamaan elemen aij dengan bkl apakah terdapat empat elemen yang sama yang berurutan. Jika iya, program akan menampilkan bahwa matriks B adalah submatriks dari matriks A.
Berikut ini source code program yang saya modifikasi berdasarkan program yang ditulis dalam bahasa Java yang saya dapatkan di Stackoverflow, program ini dibuat dengan array konstan, atau tidak meminta input dari pengguna, jika ingin diubah bisa saja.:
Program cekSubMat; uses crt; const ROWA = 3; COLA = 3; ROWB = 2; COLB = 1; A: Array[0..ROWA, 0..COLA] of Integer = ((2, 3, 5, 7), (5, 8, 3, 2), (7, 6, 2, 7), (3, 8, 5, 3)); B: Array[0..ROWB, 0..COLB] of Integer = ((3, 5), (8, 3), (6, 2)); var i, j, k, l, counter, bar, kol: integer; submatrix, nemu: Boolean; begin writeln('TAMPILAN MATRIKS YANG DIINPUT'); for i := 0 To ROWA do begin for j := 0 to COLA do begin write(A[i, j], ' '); end; writeln(' '); end; writeln(' '); writeln('CONTOH SUBMATRIKS'); for i := 0 To ROWB do begin for j := 0 to COLB do begin write(B[i, j], ' '); end; writeln(' '); end; writeln(' '); for i := 0 to ROWA-ROWB do begin //Pengurangan (ROWA-ROWB) dan (COLA-COLB)dilakukan for j := 0 to COLA-COLB do begin //agar tidak terjadi "out of bound" error counter := 0; for k := 0 to ROWB do begin for l := 0 to COLB do begin if (A[i+k, j+l] = B[k, l]) then begin // Memulai pencarian submatriks counter := counter + 1; // jika ditemukan counter bertambah 1 end else begin counter := 0; // jika setelahnya tidak ditemukan kesamaan end; // counter kembali 0 end; end; if (counter = (ROWB+1)*(COLB+1)) then begin // Jika ditemukan sesuai nemu := TRUE; // dengan kondisi maka bar := i; // submatriks ditemukan kol := j; end; end; end; writeln(' '); writeln('HASIL'); if (nemu) then writeln('Submatriks ditemukan pada elemen (a',bar+1,kol+1,') sampai (a',bar+k+1,kol+l+1,').') else writeln('Sayangnya, submatriks yang Anda input-kan tidak ditemukan.'); readln; end.Hasilnya akan seperti:
Jika masih bingung, silakan ditanyakan atau dicoba pahami terlebih dahulu ^_^. Ciao
Related Posts :
- Back to Home »
- Ilmu Komputer , Matematika , Pelajaran , Pemrograman »
- [PASCAL] Program Mencari apakah Matriks merupakan Submatriks