Wednesday, 22 May 2013

Program Sederhana untuk Replace String (Part II)



Tulisan ini merupakan lanjutan dari:
Program Sederhana untuk Replace String (Part I)


Setelah bahan dibutuhkan telah siap, saatnya kita memproses. Tambahkan kode berikut:

... using namespace std; int main() { ifstream PanggilFile; PanggilFile.open("ganti.txt", ifstream::in); char karakter = PanggilFile.get(); //string temporary string sTemp = ""; initKata(); //selama file berisi data, //pengulangan terus berlangsung while (PanggilFile.good()){ //mengolah string yg udah ditampung ketika ketemu karakter spasi atau enter if ( karakter == ' ' || karakter == '\n') { bool ada = false; for(int d=0;d < bykKey;d++){ if( sTemp.compare(Kata[d].Kondisi) == 0){ cout << Kata[d].Hasil; //mengakhiri looping d = bykKey; ada = true; } } if (!ada) cout << sTemp; sTemp = ""; cout << karakter; //spasi atau new line } else{ //menambahkan setiap karakter ke dalam string sTemp += karakter; } //mengambil perkata dalam file teks karakter=PanggilFile.get(); } cout << sTemp; PanggilFile.close(); return 0; }

Kita tampung setiap karakter yang akan kita ambil kedalam variabel karakter dengan menggunakan fungsi Get (PanggilFile.get() ). Lalu periksa jika karakter yang diambil bukan spasi atau new line (karakter untuk enter) maka kita tambahkan ke dalam string sementara yaitu sTemp. Jika menemukan karakter spasi atau new line , saatnya program memeriksa apakah string yang sudah ditampung itu ada dalam kumpulan kata yang telah kita buat. Pada proses looping kita mulai mencocokkan string Kondisi dengan sTemp dengan fungsi Compare. Jika cocok maka nilai return-nya adalah 0. Setelah menemukan kata-kata yang cocok maka ditampilkan hasil yang diinginkan, dan untuk optimasi program dibuat looping langsung berakhir setelah ketemu. Selanjutnya mereset nilai sTemp dan menampilkan karakter terakhir (spasi atau new line).

Sampai disini program masih sangat sederhana, dan pembandingan stringnya masih sangat Case Sensitive, yaitu "Dua" tidak sama dengan "dua". Masalah selanjutnya adalah string Kondisi mungkin saja ada yang memiliki nilai kembar, seperti potongan kode berikut:

... Kata[0].Kondisi = "dua"; Kata[0].Hasil = "one"; Kata[1].Kondisi = "dua"; Kata[1].Hasil = "two"; ...

Secara otomatis program akan mengambil nilai pada indeks terendah, karena looping kita bersifat Ascending dan berakhir saat menemukan kata yang dicari. Jika kita tidak mengakhiri pengulangan saat kata yang dicari ditemukan alias terus mengulang sampai habis, maka hasilnya adalah kata dengan indeks teratas. Masalah lainnya penambahan kata-kata yang ingin ditambahkan harus melalui Hardcore, atau melalui kompilasi pada program. Sehingga kita mungkin perlu menambahkan fitur untuk dapat memanggil file teks yang berisi "Kondisi" dan "Hasil". Atau dapat juga membuat fitur tambahan seperti kata apa yang akan direplace dengan meminta input-an dari user. Dan tambahan beberapa fitur lainnya .

- krofz

No comments:

Post a Comment

Maaf jika komentar anda lama terbitnya ^__^, penulis berusaha OL sesering mungkin. Komentar anda adalah semangat blog ini, dan juga semangat para blogger lainnya. You can use XHTML tags: <a href="" rel="link"> </a>, <strong> </strong>, <b> </b>, <em> </em>, <i> </i>.

Spesial character use :
&lt; for <
&gt; for >


Use Pastebin.com for alternative to display your code :) .

 

back to top

back to top