Pemakaman Aneh
Destro dan Dennis sekarang berada di sebuah tempat pemakaman yang aneh, karena di pemakaman tersebut memiliki ukuran dan bentuk makam yang bermacam-macam. Petunjuk untuk menemukan manuskrip di pemakaman tersebut adalah manuskrip asli tersimpan di makam yang memiliki bentuk persegi (kotak) dan makam yang memiliki ukuran paling besar. Oleh karena itu, untuk memudahkan Destro dan Dennis mencari makam yang berbentuk persegi yang paling besar, maka Destro membuat sutu alat yang dapat mensimulasikan lahan pemakaman untuk mencari makam yang berbentuk persegi yang ukurannya paling besar. Untuk mensimulasikan lahan pemakaman tersebut, digunakan simbol * untuk rumput dan simbol # untuk makam.Format Masukkan
Masukkan pertama adalah ukuran lahan pemakaman (M x N), diikuti dengan masukkan * dan # yang melambangkan rumput dan pemakaman.
Format Keluaran
Tampilkan ukuran makam yang memenuhi petunjuk untuk menemukan manuskrip asli.
Contoh Masukkan 1
5 5
* * * * *
* # * * *
* * # # *
* * # # *
* * * * *
Contoh Keluaran 1
2
Pembahasan
Jadi lahan pemakaman yang dicari adalah yang berbentuk persegi paling besar. Keluaran yang diharapkan adalah ukuran sisi persegi paling besar tersebut.
Yang diperlukan adalah tahap memasukan ordo matrik, nilai matrik dalam bentu '*' dan '#', kemudian mendeteksi nilai matrik '#', dari situ dihitung jumlah matrik '#', tentukan jumlah matrik'#' terbesar, hasilnya di akar kan, sehingga kita mendapat sisi dari persegi paling besar.
Kekurangan
Kekurangan dari program saya ini, masukkannya masih manual belum pakai file, jadi kalau ordo matriknya 6 x 10 gitu, ya... hihihi masukan nilai matriknya 60 kali.... coba Anda buat saja yang versinya lebih nyaman.
Listing program :
program matriks;
uses crt;
var mat:array[1..50,1..50] of char;
kuburan:array[1..50]of byte;
i,j,k,l,baris,kolom,jumkub,tampung:byte;
begin
clrscr;
read(baris, kolom);
{memasukkan matrik}
for i:=1 to baris do
for j:=1 to kolom do readln(mat[i,j]);
{mendeteksi #}
for i:=1 to baris do
for j:= 1 to kolom do begin
if mat[i,j]='#' then begin
tampung:=0;
for k:=i to baris do
for l:=j to kolom do
if mat[k,l]='#' then inc(tampung) else break;
if tampung>jumkub then jumkub:=tampung;
end;
end;
{menuliskan jumlah orde kuburan}
writeln(jumkub,' ',sqrt(jumkub):2:0);
readkey;
end.
0 komentar:
Posting Komentar
Catatan: Hanya anggota dari blog ini yang dapat mengirim komentar.