info link

computer, education, technology, information, properti, job vacation, healt, sport, software, hardware, downloading.


Menyebut Angka Terbalik

Menyebut Angka Terbalik

Kita mulai memasuki salah satu bagian favorit saya yaitu “mengkonversi” bilangan menjadi kalimat / kata – kata J. Kita memasuki dulu bagian yang mudahnya, menyebut angka dengan terbalik. Kali ini, kita meminta user untuk mengurangi  bilangan apa pun (yang lebih kecil dari 10.000) dengan 10.000. Misalnya, user memasukkan angka 3456, maka 10.000 – 3.456 tentu saja hasilnya = 6.544, tapi kita mengkonversinya dengan menjadikannya sebagai kalimat tapi dibaca terbalik. Jadi, tampilannya adalah: empat empat lima enam J.
Kodenya adalah:

#include <iostream>
using namespace std;

void sntce (int n) {
      switch (n) {
      case 1: cout << "satu "; break;
      case 2: cout << "dua "; break;
      case 3: cout << "tiga "; break;
      case 4: cout << "empat "; break;
      case 5: cout << "lima "; break;
      case 6: cout << "enam "; break;
      case 7: cout << "tujuh "; break;
      case 8: cout << "delapan "; break;
      case 9: cout << "sembilan "; break;
      case 0: cout << "nol "; break;
      default: break;
      }
}

void reverse (int n) {
      int zero, mod;
      zero = n / 10;
      mod = n % 10;

      if (zero == 0 && mod == 0)
            exit;

      else {
            sntce (mod);
            reverse (zero);
      }
}


void main () {
      int in, reduce;
      const int stay = 10000;

      do {
            cout << "";
            cin >> in;
      } while (in > 10000 || in < 1);

      reduce = stay - in;
      reverse (reduce);
      cout << "\n";
}
                 
Logika:
Dari input yang dimasukan oleh user, dikurangi dengan 10.000 lalu hasilnya mulai dari angka paling terakhir sampai dengan angka pertama dikonversi ke dalam bentuk angka. Cara untuk “mengambil” angka terakhir adalah dengan mengambil modulo / sisa bagi dari hasil pengurangan tersebut dibagi 10. Misalnya, hasilnya 6544 dibagi 10 tentu saja sisanya adalah 4. Kemudian hasil bulat dari 6544 dibagi 10 yang adalah 654 akan di bagi lagi dengan 10 dan akan menghasilkan angka 4. Dan hasil bulat dari 654 dibagi 10 yang adalah 65 kembali dibagi dengan 10 dan sisanya adalah 5. Kemudian yang terakhir, karena nilai 6 yang disimpan kemudian dibagi 10, dan sisanya pasti 6, maka 6 diambil.

Penjelasan kode:
Pada bagian utama program, kita membuat beberapa variabel: reduce, in, dan stay. Variabel reduce sendiri berguna untuk menampung hasil pengurangan dari stay, yang telah kita beri nilai konstan dari awal yaitu 10.000. Tapi, kita mau mencegah agar user tidak memasukkan angka yang “tidak lazim” misalnya angka 0 atau 10.001 dan seterusnya. Maka,  kita memakai fungsi do...while (ini sebenarnya “favorit” saya, karena saya ingin selalu mencegah input yang tidak normal) dengan “aturan” bahwa tampilan tersebut (“”) akan selalu terulang bila user memasukkan angka yang lebih besar dari 10.000 atau lebih kecil dari 1. Kita lalu memasukkan reduce ke reverse, itulah akhir dari program utama. Lalu, seperti yang kita lihat di atas, ada 2 fungsi yang kita buat sejak awal: sntce dan reverse. sntce berfungsi untuk mengkonversi angka menjadi sebuah kata dengan fungsi switch, yang saya rasa sudah cukup jelas, bahwa jika inputnya (dalam hal ini adalah sisa bagi dari 10.000 dikurangi input dari user kemudian dibagi 10) adalah 1, maka yang ditampilkan adalah kata “satu”, bila 2, maka ditampilkan adalah “dua”, dst. Sedangkan reverse untuk menghitung hasil pengurangan dari 10.000 dikurangi dengan input dari user (in). Di sini kita memakai dua kondisi, yaitu jika hasil bulat dari n (reduce) dibagi 10 sama dengan 0 dan juga sisa bagi  (mod) sama dengan 0 (nol), dan kondisi di luat itu (tentu saja ini berarti bahwa masih ada bilangan yang harus di bagi 10 atau bisa saja masih ada sisa bagi yang harus di masukkan ke sntce). Jika yag terjadi adalah kondisi kedua, kita “melempar” variabel mod ke sntce (udah tau kan fungsinya?) lalu memangil kembali reverse dengan menggunakan zero sampai akhirnya tidak ada lagi yang bisa dibagi dan tidak ada lagi sisa pembagian.



Lisensi Dokumen:
Copyright © 2003-2007 IlmuKomputer.Com
 

0 komentar :

Posting Komentar

free counters