Segitiga Pascal – part II

Oktober 27, 2008 at 4:40 pm (Programming)

Karena banyaknya permintaan, saya coba buat coding untuk program Segitiga Pascal dalamĀ  C++. Mohon maaf, untuk

program dalam bahasa JAVA, saya belum bisa buat karena pemahaman OOP saya masih cetek dan lebih-lebih, laptop saya

yang sudah tuwa dan mulai rewel menolak untuk diinstall JDK T_T
Algoritmanya tidak jauh berbeda dengan program sebelumnya dalam bahasa Pascal. Hanya saja, untuk kemudahan, saya

gunakan array 2 dimensi saja. Listingnya sebegai berikut

#include <iostream.h>

int main(){
int n,i,j;
unsigned long long arr[101][101];

cin>>n;
for (i=1;i<=n;i++){
for (j=1;j<i;j++){
arr[i][j]=arr[i-1][j-1]+arr[i-1][j];
cout<<arr[i][j]<<’ ‘;
}
arr[i][i]=1;
cout<<arr[i][i]<<’\n’;
}

return 0;
}

Katanya, banyak jalan menuju Roma. Begitu pula dalam pemrograman. banyak algoritma yang bisa diterapkan untuk

menyelesaikan satu masalah. Berikut ini salah satu coding lain untuk membuat Segitiga Pascal. Masih mengunakan

bahasa C++, hanya dengan sedikit sentuhan STL dan trik minimalisasi memori (duuh, kayakya bahasanya ketinggian,

hehehe… :p ). Here they are

#include <iostream.h>
#include <vector.h>

int main(){
int n,i,j,tmp1,tmp2;
vector <unsigned long long> arr;
bool odd;

cin>>n;
arr.push_back(0);
arr.push_back(1);
if (n>=1) cout<<arr[1]<<’\n’;

for (i=2;i<=n;i++){
odd=i%2;
tmp1=0;
for (j=1;j<=i/2;j++){
tmp2=arr[j];
arr[j]=tmp1+arr[j];
tmp1=tmp2;
}

for (j=1;j<=i/2;j++) cout<<arr[j]<<’ ‘;
if (odd) {
arr.push_back(2*tmp1);
cout<<arr[i/2+1]<<’ ‘;
}
for (j=i/2;j>=1;j–) cout<<arr[j]<<’ ‘;
cout<<’\n’;
}
return 0;
}

Kira-kira demikianlah :)
semoga bisa membantu dan semoga tidak ngebug juga :p

Permalink & Komentar