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
