Uji kompetensi SDATA 01
program fibonacci
#include <cstdlib>
#include <iostream>
using namespace std;
class madis{
public:
void pilih();
void arit();
void vibo();
private:
int q[100];
};
void madis::pilih(){
int n;
cout<<"\n1. Aritmatik !?\n2. Vibonacci !?\n";
cout<<"\n\npilihan anda : ";
cin>>n;
if(n==1)arit();
if(n==2)vibo();
else cout<<"\n\n***selesai***\n\n";
}
void madis::arit() {
//system("cls");
int n,s,a,jml=0;
cout<<"\nMasukkan nilai awal :";cin>>s;
cout<<"masukkan beda :";cin>>a;
cout<<"masukkan batas (berapa kali diulang):";cin>>n;
cout<<"\nMaka didapat deret aritmatik\n=>";
for (int i=0;i<n;i++){
q[i]=s+i*a;
cout<<q[i]<<" ";
jml=jml+q[i];
}
cout<<"\nJumlah dari deret adalah "<<jml;
cout<<"\n\n";pilih();
}
void madis :: vibo(){
// system ("cls");
int i,a,s,d=0,n;
cout<<"\nMasukan nilai awal :";cin>>a;
cout<<"masukan batas nilai :";cin>>n;
s=a;
i=a;
cout<<"\nMaka akan didapat deretan :\n"<<i<<" ";
for (int i=0;i<n-1;i++){
q[i]=s+a;
s=a;
a=q[i];
cout<<q[i]<<" ";
d=d+q[i];
}
cout<<"\nJumlah dari deret adalah "<<d+i;
cout<<"\n\n"; pilih();
}
int main()
{
madis z;
z.pilih();
system("PAUSE");
return 0;
}
2. Buatlah fungsi untuk mencetak bilangan 1 sampai 10 secara iteratif dan rekursif (going up recursion, going down recursion, dan two half recursion).
iteratif
#include
Int Main(){
Int I;
For(i=1;i<=10;i++){
Cout<<” “<
}
Return 0;
}
3. Buatlah subprogram x pangkat n dengan cara rekursif menggunakan ketiga cara rekursi
#include
Long L(Int n)
{ if ((n==0 || (n==1)) return(1);
Else return (n*L(n-1)+1);
}
main (){
int n;
long hasil;
cout<<”input n:”;
cin>>n;
hasil=L(n);
cout<<”Nilai”<
return 0;
}
4. Dengan menggunakan kenyataan bahwa deret : 1, 3, 7, 15, 31, …
hasil jumlahnya mengikuti rumus :
L(n) = 2*L(n-1) +1
buatlah fungsi iteratif dan rekursif untuk menghitung jumlah deret tersebut.
If (n=0) or (n-1) then factorial = 1
Else factorial = n*factorial(n-1)
#include <cstdlib>
#include <iostream>
using namespace std;
class madis{
public:
void pilih();
void arit();
void vibo();
private:
int q[100];
};
void madis::pilih(){
int n;
cout<<"\n1. Aritmatik !?\n2. Vibonacci !?\n";
cout<<"\n\npilihan anda : ";
cin>>n;
if(n==1)arit();
if(n==2)vibo();
else cout<<"\n\n***selesai***\n\n";
}
void madis::arit() {
//system("cls");
int n,s,a,jml=0;
cout<<"\nMasukkan nilai awal :";cin>>s;
cout<<"masukkan beda :";cin>>a;
cout<<"masukkan batas (berapa kali diulang):";cin>>n;
cout<<"\nMaka didapat deret aritmatik\n=>";
for (int i=0;i<n;i++){
q[i]=s+i*a;
cout<<q[i]<<" ";
jml=jml+q[i];
}
cout<<"\nJumlah dari deret adalah "<<jml;
cout<<"\n\n";pilih();
}
void madis :: vibo(){
// system ("cls");
int i,a,s,d=0,n;
cout<<"\nMasukan nilai awal :";cin>>a;
cout<<"masukan batas nilai :";cin>>n;
s=a;
i=a;
cout<<"\nMaka akan didapat deretan :\n"<<i<<" ";
for (int i=0;i<n-1;i++){
q[i]=s+a;
s=a;
a=q[i];
cout<<q[i]<<" ";
d=d+q[i];
}
cout<<"\nJumlah dari deret adalah "<<d+i;
cout<<"\n\n"; pilih();
}
int main()
{
madis z;
z.pilih();
system("PAUSE");
return 0;
}
2. Buatlah fungsi untuk mencetak bilangan 1 sampai 10 secara iteratif dan rekursif (going up recursion, going down recursion, dan two half recursion).
iteratif
#include
Int Main(){
Int I;
For(i=1;i<=10;i++){
Cout<<” “<
}
Return 0;
}
3. Buatlah subprogram x pangkat n dengan cara rekursif menggunakan ketiga cara rekursi
#include
Long L(Int n)
{ if ((n==0 || (n==1)) return(1);
Else return (n*L(n-1)+1);
}
main (){
int n;
long hasil;
cout<<”input n:”;
cin>>n;
hasil=L(n);
cout<<”Nilai”<
return 0;
}
4. Dengan menggunakan kenyataan bahwa deret : 1, 3, 7, 15, 31, …
hasil jumlahnya mengikuti rumus :
L(n) = 2*L(n-1) +1
buatlah fungsi iteratif dan rekursif untuk menghitung jumlah deret tersebut.
If (n=0) or (n-1) then factorial = 1
Else factorial = n*factorial(n-1)
Komentar
Posting Komentar