Diktat_Prosedural_13_StudiKasus

Z indeks traversal matriks i j integer 1nmax

Info iconThis preview shows page 1. Sign up to view the full content.

View Full Document Right Arrow Icon
This is the end of the preview. Sign up to access the rest of the document.

Unformatted text preview: milih struktur matriks. Setiap baris matriks dengan ciri baris C (karakter), akan mempunyai 100 kolom dengan setiap kolom yang menyatakan posisi kemunculan pada pita. Maka kemunculan adalah sebuah matriks boolean, MatMuncul (C,I) yang artinya posisi kemunculan karakter C sebagai karakter ke-I. Setiap elemen MatMuncul (C,I) berharga true jika C muncul sebagai karakter ke-I. 100 1 2 3 a b c I C z Algoritma menjadi sederhana dan terdiri dari 2 pass: traversal pita untuk membentuk matriks, tulis isi matriks. Secara garis besar sketsa algoritma adalah: Inisialisasi matriks kemunculan Traversal pita : untuk setiap huruf C (yang diketahui posisinya I), isi nilai MatMuncul(C,I) dengan true Tulis output berdasarkan keadaan matriks Algoritma secara detil diberikan berikut ini: Program Kemunculan1 { Representasi KONTIGU dengan matriks boolean } { Skema proses sekuensial dengan mark, dengan penanganan kasus kosong } Oleh: Inggriani Liem/Revisi bab oleh: Tim IF2030 sem. 1 2011-2012/Tgl. Revisi: 21 Nov 2011 30 Draft Diktat Struktur Data Hanya untuk digunakan di lingkungan Sekolah Teknik Elektro dan Informatika ITB KAMUS constant Nmax : integer = 100 { maksimum isi pita yang diproses adalah 100 } MatMuncul : matrix ['a'..'z', 1..Nmax] of boolean { MatMuncul(C,I) adalah kemunculan karakter C sebagai urutan ke-I dalam pita } Count : integer [1..Nmax] { jumlah kemunculan sebuah huruf } Posisi : integer { posisi karakter pada pita } JumlahKar : integer { banyaknya karakter pada pita } C : character ['a'..'z'] { indeks traversal matriks } i, j : integer [1..NMax] { kemunculan karakter, juga indeks traversal matriks } ALGORITMA START if CC = '.' then output ("Pita kosong, tidak ada isinya") else { Inisialisasi : traversal, mengosongkan matriks kemunculan } C traversal ['a'..'z'] i traversal [1..100] MatMunculC,i ← false Posisi ← 1 { Proses sekuensial satu kali traversal isi pita } repeat depend on CC : CC = ' ' : CC ≠ ' ' : MatMuncul CC,Posisi ← true Posisi ← Posisi + 1 ADV until (CC = '.') or (Posisi > 100) { Penulisan hasil : traversal } JumlahKar ← Posisi - 1 C traversal ['a'..'z'] { Untuk setiap karakter: } { Search sampai ketemu true, berarti ada huruf ybs. muncul } i←1 while (i < JumlahKar) and (not MatMuncul C,i) do i←i+1 { i = Posisi or MatMuncul(C,i) } depend on MatMuncul(C,i) not MatMuncul C,i : - { berarti huruf C tidak muncul } MatMuncul C,i : { berarti huruf C muncul } output (C) Count ← 1; output(i) if (i = JumlahKar) then { outputkan yg muncul , traversal menghitung dimana saja muncul } j traversal [i +1..100] if MatMuncul C,j then Count ← Count + 1; output(j) output ("Muncul ", Count, " kali") Skema solusi di atas untuk penulisan hasil adalah: Search kemunculan pertama pada suatu row, kemudian traversal sisanya. Variasi dari solusi di atas: Pengulangan "search" kemunculan sampai sebuah row selesai diproses. Oleh: Inggriani Liem/Revisi bab oleh: Tim IF2030 sem. 1 2011-2012/Tgl. Revisi: 21 Nov 2011 31 Draft Diktat Struktur Data Hanya untuk diguna...
View Full Document

This document was uploaded on 03/15/2014 for the course IF 2030 at Institut Teknologi Bandung.

Ask a homework question - tutors are online