BigInteger

Big integer : menjumlahkan banyak digit dengan tipe data integer
Kalian semua tahu bahwa bilangan yang tipe datanya integer pasti hanya dibatasi 10 digit saja. Terus bagaimana jika kita ingin menjumlahkan banyak sekali digit. Misal kita mempunyai bilangan 30 digit. Pasti jika kita membuat program dengan hanya menggunakan tipe data integer aka eror hasilnya. Oleh karena itu kita bisa menggunakan array. Setiap digit bilangan aka disimpan dalam satu elemen array. Contoh :
Kita ambil bilangan pertama 57575757, bilangan kedua 12345678
Dalam program bilangan itu akan disimpan di dalam setiap elemen array

Bilangan pertama

5 7 5 7 5 7 5 7

Bilangan kedua

1 2 3 4 5 6 7 8
Setelah didapatkan seperti itu maka setiap digitnya tinggal dilakukan penjumlahan. Tetapi disini yang terjadi hail dari penjumlahannya juga disimpan dalan setiap elemen array. Seperti contoh diatas akan terjadi 7 + 8 = 15. Angka 15 aka tersimpan di elemen terakhir array tersebut. Maka kita harus pintar – pintar bermain dengan komputer. Kita gunakan modulo untuk mendapatkan angka 5. Sehingga dalam memori array tidak tersimpan 15. Selanjutnya digit yang lebih kecil kita tambah 1. Karena 10 dari 15 tadi ditambahkan didepannya. Seperti penjumlahan biasa di sekolah dasar.
Berdasarkan  logika tersebut dapat dibuat suatu program yang dapat menjumlahkan bilangan big integer. Yaitu bilangan yang bertipe integer tetapi memiliki digit yang banyak sesuai yang kita inginkan.
Penulisannya bisa dibuat seperti ini :
void aritmatika::penjumlahan(){
     for(int i=(digit-1);i>=0;i–){
             jumlah[i]=jumlah[i]+input1[i]+input2[i];
             if (jumlah[i] >9 && i !=0){
                               jumlah[i]=jumlah[i]%10;
                               jumlah[i-1]=jumlah[i-1]+1;
                               }
             }
     }
Implementasi dalam Bahasa C++ :

#include <cstdlib>
#include <iostream>

using namespace std;

class aritmatika{
      public:
             aritmatika();
             void masuk();
             void beri_nilai();
             void penjumlahan();
             void keluar();
      private:
              int digit;
              int input1[999];
              int input2[999];
              int jumlah[999];
      };

aritmatika::aritmatika(){
                         cout<<"penjumlahan 2 bilangan dengan banyak digit"<<endl<<endl;
                         }

void aritmatika::masuk(){
     cout<<"digit dari kiri"<<endl;
     cout<<"banyaknya digit : ";
     cin>>digit;
     cout<<"\nbilangan pertama"<<endl;
     for(int i=0;i<digit;i++){
             cout<<"digit ke-"<<(i+1)<<" : ";
             cin>>input1[i];
             }
     cout<<"bilangan : ";
     for(int i=0;i<digit;i++){
             cout<<input1[i];
             }
     cout<<endl;
     cout<<"\nbilangan kedua"<<endl;
     for(int i=0;i<digit;i++){
             cout<<"digit ke-"<<(i+1)<<" : ";
             cin>>input2[i];
             }
     cout<<"bilangan : ";
     for(int i=0;i<digit;i++){
             cout<<input2[i];
             }
     cout<<endl;
     }

void aritmatika::beri_nilai(){
     for(int i=0;i<digit;i++){
             jumlah[i]=0;
             }
     }

void aritmatika::penjumlahan(){
     for(int i=(digit-1);i>=0;i--){
             jumlah[i]=jumlah[i]+input1[i]+input2[i];
             if (jumlah[i] >9 && i !=0){
                               jumlah[i]=jumlah[i]%10;
                               jumlah[i-1]=jumlah[i-1]+1;
                               }
             }
     }

void aritmatika::keluar(){
     cout<<"\nhasil penjumlahan : ";
     for(int i=0;i<digit;i++){
             cout<<jumlah[i];
             }
     cout<<endl<<endl;
     }

int main(int argc, char *argv[])
{
    aritmatika bigint;
    bigint.masuk();
    bigint.beri_nilai();
    bigint.penjumlahan();
    bigint.keluar();

    system("PAUSE");
    return EXIT_SUCCESS;
}

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s