Segitiga Pascal – part II
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
baobaz berkata,
Oktober 30, 2008 pada 4:16 pm
wow..
masih sering coding2 nih. haha..
goodluck aja deh.
rusdy berkata,
November 4, 2008 pada 12:43 pm
mas kalo mo cetak segitiga sama sisi kayak gini , caranya gmn?
*****
***
**
*
Thanks
Riza berkata,
November 5, 2008 pada 2:40 am
Sama sisi atau siku2?
Kalau siku2, kan bisa pake perulangan bersarang, tinggal counternya didecrease per baris.
Yg sama sisi juga mirip, tinggal di sisipin karakter spasi di depannya.
Cuma banyak karakter ‘*’ perbarisnya harus ganjil.
Monggo, di coba
cox berkata,
November 10, 2008 pada 2:14 am
laen kali mintak bantuannya y kak
maksi
ikuTAn berkata,
November 12, 2008 pada 12:08 am
boZz soRY niCH. . ,
w daH coBA proGramnYa. . ,
taPI ko bnYAk bGT yanG eroR ya?????
whY???
Riza berkata,
November 12, 2008 pada 12:39 am
@cox:
Monggo, akan saya bantu kalo bisa
@ikuTAn:
Waduh, error messagenya gimana?
Hmm..mungkin compilernya yg beda.
Aku pake dev-c++
Coba “unsigned long long”nya diganti “long” saja.
Gea berkata,
November 12, 2008 pada 7:02 pm
rumus aslinya ntu pa an seh…….
kalo program yg,
input : 1237611
output: satu juta dua ratus tiga puluh tujuh ribu enam ratus sebelas rupiah
ada yg tau nggak??
kayaknya di sini pasti ada yg tau….
thanks–
Riza berkata,
November 20, 2008 pada 7:36 am
monggo di klik
http://rizaon.wordpress.com/2008/11/20/program-penerjemah-bilangan/
numpang nanya !!! berkata,
Januari 20, 2009 pada 12:45 pm
gw mo nanya nih…kalo buat program pascal yang outputnya kayak gini gimana ya ?????
**********1*********
*********232*******
*******34543******
******4567654*****
****567898765****
**67890109876***
terus tanda bintang nya itu diganti sama “spasi”…
thanx b4…
Riza berkata,
Januari 30, 2009 pada 3:26 am
Hmmm…
itu kayaknya tinggal main indeks deh,
dicari aja dulu itung2ngan buat loopingnya, simple kok
kalo angkanya, tinggal di mod 10 aja kayaknya.
ita berkata,
April 20, 2009 pada 6:51 am
Bagaimana buat program pascalnya lok outputnya kaya gni??
**********1*********
*********232*******
*******34543******
******4567654*****
****567898765****
**67890109876***
tapi tanda bintangnya tidak ada, hanya angka itu saja…
trimakasih sebelumnya..
tlong cpat dikasi tawu ya…
Riza berkata,
April 20, 2009 pada 3:41 pm
Humm, same problem..
ok, mungkin procedure ini bisa membantu
procedure tri(baris:integer);var i,j:integer;
begin
for i:=1 to baris do
begin
for j:=1 to baris-i do write(' ');
for j:=i to 2*i-2 do write(j mod 10);
write((2*i-1) mod 10);
for j:=2*i-2 downto i do write(j mod 10);
writeln;
end;
end;
nero berkata,
September 10, 2009 pada 4:02 pm
gila nih thx ada cewek nanya nih gw tinggal sok2 pinter aje