Sabtu, 24 November 2012

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.

Tidak ada komentar:

Posting Komentar