Menghitung Banyak Huruf, Vokal dan Konsonan dengan C

Kali ini saya akan menunjukan bagaimana membuat sebuah program yang dapat menghitung banyaknya huruf alphabet dari A sampai Z, serta menghitung banyaknya huruf vokal dan konsonan. Bagi yang sedang belajar pemrograman, mungkin artikel ini akan membantu anda untuk belajar atau menyelesaikan tugas pemrograman. Serta dengan sedikit penjelasan yang berguna untuk anda yang nantinya memberikan gambaran bagaimana program ini dibuat.


Membedah alogritma program

Untuk diagram alur program yang akan kita buat, kira-kira begini:

flow_huruf1

Untuk inisialisasi data dan input data, saya rasa tidak susah dan hanya perlu fungsi fgets ke stdin untuk inputnya (gets bisa juga, tetapi tidak disarankan untuk berberapa kompiler dan muncul warning karena berpotensi menyebabkan buffer overflow).

Dan pastikan, nilai semua direset ke nol.

Setelah itu, sekarang saatnya menghitung banyaknya alphabet yang digunakan dan dimasukan ke dalam suatu counter array. Untuk looping penghitungan huruf, bisa diimplementasikan sebagai berikut.

Pada contoh barusan, program akan looping ke semua karakter hingga karakter null-terminator. Untuk menghitung hanya karakter alphabet saja, maka kita perlu mengimplementasikan sebuah fungsi yang menentukan dan menghitung alphabet yang digunakan. Pada kasus ini, fungsi ini saya namai itung_kar.

Adapun alur dari fungsi dari itung_kar ini sebagai berikut:

fungsi_itung_kar

Lalu bagaimana cara mengkonversi karakter alphabet, lalu menjumlahkannya sesuai counter?

Untuk statemen pertama, anda harus paham bagaimana susunan tabel ASCII. Pertama kita buat batasan dengan if, jika karakter diantara indeks ke 64 dan 89 (a dan z besar), maka akan kita tambahkan sehingga menjadi huruf kecil (karena dalam susunan tabel ASCII, a kecil dimulai dari indeks ke 97). Tambahkan saja huruf tersebut dengan dengan hasil indeks_a_kecil – indeks_a_besar – 1. Untuk bagian ini, saya tidak menggunakan fungsi standar dari pemrograman C supaya kode lebih efisien, serta anda dapat belajar bagaimana deret suatu karakter, dan mencegah huruf besar untuk tidak masuk dalam hitungan selanjutnya.  :afro:

Supaya gak mumet kode kita, buat saja macro berikut

Untuk statemen berikutnya, buat batasan if, tetapi untuk huruf kecil (dari indeks 97 ke 122). Jika cocok, kurangi indeks dari char tersebut dengan 97 dan gunakan hasil pengurangan sebagai indeks array counter yang di increment-kan. Lalu lakukan increment pada array dengan indeks yang barusan kita dapatkan tadi.

Hmm, sudah kebayang bagaimana anda bisa mengakses array counter sesuai urutan alphabet? Maka fungsi yang akan kita hasilkan sebagai berikut:

Lanjut, sekarang untuk alur fungsi vokal_kons adalah sebagai berikut.

fungsi_vokal_kons

Karena loopingnya juga ga ribet-ribet amat, berikut kode yang akan kita amati:

Kita melakukan looping dari counter indeks 0 (untuk alphabet A) hingga indeks 25 (untuk alphabet Z). Sebenarnya, kita bisa saja menambahkan langsung counter yang konsonan dijumlahkan dalam variabel konsonan, dan sebaliknya, namun kodenya jadi kepanjangan. Sehingga saya membuat pattern (pola, lihat pada konstanta index_vk), dimana jika indeks yang ditemukan adalah k, maka indeks tersebut adalah untuk konsonan, dan sebaliknya.

Hmm, jangan lupa kode untuk penggunaan fungsi dan cetak outputnya  :cool


Hasil akhir

Berikut adalah hasil program yang telah kita buat  :cendol

Compile dan test hasilnya…

vk_out

Dan akhirnya, semoga artikel ini bermamfaat bagi anda semua. Sampai jumpa di tutorial dan artikel selanjutnya  :thanks2