Algoritma dan Program Big Integer (Ver. Rekursif) dengan C++
Mei 29, 2011
Jika kita menjumlahkan dua buah bilangan, misal 345 dan 567. Tentunya kita ingat sewaktu kita diajarkan penjumlahan saat duduk pada bangku Sekolah Dasar. Kita akan menjumlahkan dari belakang, dan jika hasil dari penjumlahan > 10 maka yang diambil nilai yng belakangnya dan digit yang berikutnya akan ditambah dengan satu, seperti berikut ini:
345
567
— +
912
tidak mungkin hasilnya seperti ini :
345
567
— +
81012
maka dapat kita lihat pada program berikut ini dengan cara rekursif:
Program Big Integer Perhitungan Matematika
#include <cstdlib> #include <iostream> using namespace std; int angka; int A[20]; int B[20]; int jumlah[20]; void masuk(int angka){ cout<<"Penjumlahan 2 bilangan (BIG INTEGER) ITERATIF "<<endl<<endl; cout<<"masukkan banyak bilangan: "; cin>>angka; cout<<"\nbilangan pertama : "<<endl; for(int i=0;i<angka;i++){ cout<<"angka ke-"<<(i+1)<<" : "; cin>>A[i]; } cout<<"bilangan 1 = "; for(int i=0;i<angka;i++){ cout<<A[i]; } cout<<endl; cout<<"\nbilangan kedua : "<<endl; for(int i=0;i<angka;i++){ cout<<"digit ke-"<<(i+1)<<" : "; cin>>B[i]; } cout<<"bilangan 2 = "; for(int i=0;i<angka;i++){ cout<<B[i]; } cout<<endl; } void beri_nilai(int angka){ for(int i=0;i<angka;i++){ jumlah[i]=0; } } /*void penjumlahan_iteratif(int angka){ for(int i=(angka-1);i>=0;i--){ jumlah[i]=jumlah[i]+A[i]+B[i]; if (jumlah[i] >9 && i !=0){ jumlah[i]=jumlah[i]%10; jumlah[i-1]=jumlah[i-1]+1; } } }*/ void penjumlahan_rekursif(int angka){ int i=0; if(angka>0){ if(jumlah[i] >9 && i !=0){ jumlah[i]=jumlah[i]%10; return penjumlahan_rekursif(angka-1); } else { jumlah[i-1]=jumlah[i-1]+1; return penjumlahan_rekursif(angka-1); } } } void keluar(int angka){ cout<<"\nHasil penjumlahan 2 bilangan = "; for(int i=0;i<angka;i++){ cout<<jumlah[i]; } cout<<endl<<endl; } int main(int argc, char *argv[]) { //penjumlahan_iteratif(10); cout<<endl; penjumlahan_rekursif(angka); system("PAUSE"); return EXIT_SUCCESS; }
Selamat Mencoba!!