Tampilkan postingan dengan label latihan/kasus Alpro. Tampilkan semua postingan
Tampilkan postingan dengan label latihan/kasus Alpro. Tampilkan semua postingan

Selasa, 17 April 2012

menampilkan angka genap dari 25 sampai dengan 70 secara rekursif

#include <iostream>
#include <string>

using namespace std;
class genap{
      friend istream& operator>>(istream&, genap&);
      friend ostream& operator<<(ostream&, genap&);
      public:
             genap();
             int proses(int i);
             private:
                     int i;
                     };
      genap::genap(){
      cout<<" menampilkan angka genap dari 25 sampai dengan 70"<<endl;
      }
     
     
      int genap::proses(int i){
          if(i>70){     
          } else
          { if(i%2==0)
          {        
          cout<<i<<endl;}
          else
          {} proses(i+1);
          }
          }
         
                            

int main()
{
    genap x;
    x.proses(25);
   
    system("PAUSE");
    return EXIT_SUCCESS;
}

outputnya:

Senin, 16 April 2012

integer multiplication of two functions using the sum operator(fungsi perkalian 2 bilangan bulat dengan menggunakan operator penjumlahan)

untuk menghitung perkalian bilangan bulat dengan menggunakan operator penjumlahan:
analisis:
axb=a+a+a+...+a(sebnyak b kali)
fungsi kali(input a,b:integer):integer
Deklarasi
hasil, i:integer
Deskripsi
hasil<- 0
for i<- 1 to b do
hasil<- hasil+a
kali<- hasil

main
 kali()
programnya:

#include <cstdlib>
#include <iostream>

using namespace std;
class kali{
      friend istream& operator>>(istream&, kali&);
      friend ostream& operator<<(ostream&, kali&);
      public:
             kali();
             int proses(int a, int b);
             int output();
             private:
                     int a,b,i;
                     int hasil;
                     };
                     kali::kali(){
                     cout<<"menghitung hasil perkalian a dan b menggunakan operator penjumlahan"<<endl;
                                  }
            istream& operator>>(istream& in, kali& masukan){
                     cout<<"masukan bilangan a:";
                     in>>masukan.a;
                     cout<<"akan dikali dengan b:";
                     in>>masukan.b;
                     }
                     int kali::proses(int a, int b){
                         int i,hasil=0;
                         for (i=1;i<=b;i++)
                         hasil=hasil+a;
                         return(hasil);
                         }
                         int kali::output(){
                             hasil=proses(a,b);
                             cout<<"Nilai"<<a<<"x"<<b<<"="<<hasil;
                             return hasil;
                             }
                             int main()
                             {
                            kali x;
                            cin>>x;
                            x.output();
                            cout<<endl<<endl;
                                                      
            
    system("PAUSE");
    return EXIT_SUCCESS;
}

outputnya:

overload program to convert decimal numbers into binary numbers

mau buat program konversi bilangan desimal ke biner? untuk konsep perhitungannya misal dimasukkan bilangan desimal(n)=12:
1). 12 dibagi 2 =6 sisa 0
2). 6 dibagi 2=3 sisa 0
3). 3 dibagi 2=1 sisa 1
4). 1 dibagi 2=0 sisa 1
maka 12 desimal=1100 biner

programnya:
#include <cstdlib>
#include <iostream>

using namespace std;
class biner{
      friend istream& operator>>(istream&, biner&);
      friend ostream& operator<<(ostream&, biner&);
     
      public:
      biner();      
      void masukan();
      void proses();
      void keluar();
      private:
      int data[100],c,n;       
      };
      biner::biner(){
       cout<<"program mengkonversi bilangan desimal ke biner"<<endl;
       }
       istream& operator>>(istream& in, biner& masukan){             
           cout<<"masukan desimal:";
           in>>masukan.n;
           }
      void biner::proses(){
           int i;
           i=0;c=0;
           while(n!=1){
                       data[i]=n%2;
                       n=n/2;i=i+1;c=c+1;
                       }
                       }
     void biner::keluar(){
          cout<<"hasil biner adalah :"<<1;
          for(int i=c-1;i>=0;i--){
                  cout<<data[i];}
                  }
                 
     int main(){
         biner a;
         cin>>a;
         a.proses();
         a.keluar();
         cout<<endl;
        
         system("PAUSE");
         return EXIT_SUCCESS;
         }                                   
            
   hasil outputnya:
           

Sabtu, 14 April 2012

fungsi fibonacci

deret fibonacci: 1,1,2,3,5,8,...
suku ke n dari deret fibonacci diperoleh dengan rumus:
fibonacci(n)=fibonacci(n-1) + fibonacci(n-2)
dengan nilai awal untk n=1 dan n=2 berharga 1

fungsi fibonacci (input n;integer) :integer
deskripsi
if(n=1) or (n=2) then fibonacci =1
else fibonacci =fibonacci(n-1)+fibonacci(n-2)
endif


#include <iostream.h>
#include <conio.h>

class Operator {
      friend ostream& operator<<(ostream&, Operator&);
      friend istream& operator>>(istream&, Operator&);
      public:
             long fibonacci(int);
             private:
                     int n;
                     };
                    
                     int fibonacci(int n)
                     { if((n==1)||(n==2)) return(1);
                     else return(fibonacci(n-1)+fibonacci(n-2));
                     }
                     ostream& operator<<(ostream& out, Operator& a){
                              for (int i=1;i<=a.n;i++)
                              out<<fibonacci(i)<<" ";
                              return out;
                              }
                             
                              istream& operator>>(istream& in, Operator& a){
                                       cout<<"Sampai suku ke:";
                                       in>>a.n;
                                       return in;
                                       }
                                      
                                       main(){
                                              Operator run;
                                              cin>>run;
                                              cout<<run;
                                              getch();
                                              }

calculate combinations and permutations

#include <iostream.h>
    #include <stdio.h>
    #include <conio.h>
long int fak (long int x);
    int main()
   
    {
    int n,r, Prts,pilihan,p;
    char ulang;
        do
    {
   
    cout<<"PERHITUNGAN KOMBINASI DAN PERMUTASI"<<endl;
    cout<<"1. KOMBINASI"<<endl;
    cout<<"2. PERMUTASI"<<endl;
   
    cout<<endl<<endl;
    cout<<"Pilihan Anda : ";cin>>pilihan;
    switch (pilihan)
    {
    case 1 :
    cout<<" Program Menghitung Kombinasi(nCr)";
    cout<<endl;
    cout<<" Masukkan Nilai n : "; cin>>n;
    cout<<endl;
    cout<<" Masukkan Nilai r : "; cin>>r;
    cout<<endl;
    if (n>r){
    Prts = fak(n)/(fak(n-r)*fak (r));
    cout<<endl;
    printf(" Kombinasinya adalah: %d",Prts);
    cout<<endl; }
    else if (n<r){
    cout<<"data tak valid";}
    cout<<endl ;
    break;
    case 2 :
    cout<<" Program Menghitung Permutasi(nPr)";
    cout<<endl;
    cout<<" Masukkan Nilai n : "; cin>>n;
    cout<<endl;
    cout<<" Masukkan Nilai r : "; cin>>r;
    cout<<endl;
    if (n>r){
    Prts = fak (n)/fak(n-r);
    cout<<endl;   
    cout<<" Permutasinya adalah: "<<Prts;
    cout<<endl; }
    else if (n<r){
    cout<<"data tak valid";}
    cout<<endl ;
    break;
    case 3 :
    cout<<"Exit"<<endl;
    break;
    default:
    cout<<"Menu tidak tersedia"<<endl;
    break;
    }
    cout<<"Kembali ke Menu Utama (y/n)?";cin>>ulang;
    }while(ulang == 'y');
    }
   
    long int fak (long int n)
    {
    int f;
    if (n<=1)
    {
    f=1;
    }
    else
    {
    f=n*fak(n-1);
    }
    return (f);
    }

algoritma menghitung konversi suhu

untuk mengkonversi suhu dari Celcius menjadi Reamur, Fahrenheit dan Kelvin dicari dengan rumus:
R=4/5*C
F=9/5*C+32
K=C+273

ini gambar flowchartnya:

konversi nilai menjadi huruf

algoritma Konversi_nilai
mengkonversikan nilai angka menjadi nilai huruf
deklarasi
nilai :integer
nilai_huruf: char
deskripsi:
read nilai
if (nlai >0) and (nilai <=20) then nilai E
if (nlai >20) and (nilai <=40) then nilai D
if (nlai >40) and (nilai <=60) then nilai C
if (nlai >60) and (nilai <=80) then nilaiB
else nilai_huruf A
endif
write (nilai_huruf)

#include <cstdlib>
#include <iostream>

using namespace std;
class Nilai{
      friend ostream& operator<<(ostream&, Nilai&);
      friend istream& operator>>(istream&, Nilai&);
      public:
      Nilai(){
              if ((nilai>0) &&(nilai <=20))
              nilai_huruf ='E';
              else if((nilai>20) &&(nilai <=40))
              nilai_huruf='D';
              else if((nilai>40) &&(nilai <=60))
              nilai_huruf='C';
              else if((nilai>60) &&(nilai <=80))
              nilai_huruf='B';
              else nilai_huruf ='A';
              }
              private:
             int nilai;
             char nilai_huruf;
             };
             istream& operator>>(istream& in, Nilai& masukan){
                      cout<<"masukkan nilai angka=";
                      in>>masukan.nilai;
                      return in;
                      };
                      ostream& operator<<(ostream& out, Nilai& keluaran){
                               out<<"Nilai angka:"<<keluaran.nilai<<endl;
                               out<<"Nilai huruf:"<<keluaran.nilai_huruf;
                               return out;
                               }
                             
                               int main(){
                                    Nilai angka;
                                    cin>>angka;
                                    angka.konversikan();
                                    cout<<angka;
                                    }
                                                


    system("PAUSE");
    return EXIT_SUCCESS;
}

membalik kata secara iteratif dan rekursif

 
#include <iostream.h>
#include <conio.h>


class Balik{
       friend istream& operator>>(istream&, Balik&);
       friend ostream& operator<<(ostream&, Balik&);
       public:
             void balik_kata();
             void balik(int s);
       private:
               char kata[50];
               int n;
};

void Balik::balik_kata(){//iteratif
     cout<<"Masukkan Kata Yang Akan Dibalik : ";
     cin>>kata;n=strlen(kata);
     //strrev(kata);
     cout<<"Kata Setelah Dibalik : ";
     balik(n);
}

void Balik::balik(int s){//rekursif
     if (s != -1){
            cout<<kata[s];
            balik(s-1);
            }
            }

int main()
{
 Balik X;
 X.balik_kata();
// X.balik(char *s);
 
  system ("Pause");
  return EXIT_SUCCESS;
}

Kamis, 12 April 2012

program displays the names of the months

program menampilkan nama-nama bulan ,bulan 1 : januari; bulan 2:februari;dst.

berikut programnya:

#include <iostream>
#include <string>

using namespace std;
class bulan{
      friend ostream& operator <<(ostream&,const bulan&);
      friend istream& operator >>(istream&,bulan&);
      public:
           
             bulan(unsigned int b=0){nama=b;}
            // void nama_bulan1();
             //void nama_bulan2();
             //void nama_bulan3();
             void bulannnya();
      private:
              unsigned int nama;
              };
   
      istream& operator>>(istream& masuk,bulan& x){
               cout<<"masukan angka 1 - 12 : ";
               masuk>>x.nama;
               return masuk;
               }
             
      void bulan::bulannnya(){
           switch(nama){
                         case 1 : cout<<"januari";break;
                         case 2 : cout<<"februari";break;
                         case 3 : cout<<"maret";break;
                         case 4 : cout<<"april";break;
                         case 5 : cout<<"mei";break;
                         case 6 : cout<<"juni";break;
                         case 7 : cout<<"juli";break;
                         case 8 : cout<<"agustus";break;
                         case 9 : cout<<"september";break;
                         case 10 : cout<<"oktober";break;
                         case 11 : cout<<"november";break;
                         case 12 : cout<<"desember";break;
                         default :cout<<"maaf angka yang anda masukan melebihi angka yang saya tentukan \n";
                         }
                         }
      int main(){
           bulan a;
           cin>>a;
           a.bulannnya();
           system("PAUSE");
           return 0;
           }

Calculate the distance between two points A (X1, Y1) and B (X2, Y2)

jika rumus jarak :
d=((x2-x1)*(x2-x1))+((y2-y1)*(y2-y1))
jarak AB= sqrt(d)

program:
#include<iostream.h>
#include<conio.h>

    class hitung{
       friend ostream& operator<<(ostream&,hitung&);
      friend istream& operator>>(istream&,hitung&);
   public:
       hitung();
      void hitung_jarak(){jarak=((Y2-Y1)*(Y2-Y1)-(X2-X1)*(X2-X1));}

   private:
       float X1,X2,Y1,Y2,jarak;
      };
   hitung::hitung(){
      cout<<"Progaram untuk menghitung Jarak dari 2 titik"<<endl;
      }
   istream& operator>>(istream& in,hitung& masukan){
       cout<<"masukan titik X1 =";
      in>>masukan.X1;
      cout<<"masukan titik X2 =";
      in>>masukan.X2;
      cout<<"masukan titik Y1 =";
      in>>masukan.Y1;
      cout<<"masukan titik Y2 =";
      in>>masukan.Y2;
      return in;
      }
   ostream& operator<<(ostream& out,hitung& output){
       cout<<"tampilkan Jumlah jarak = "<<output.jarak<<endl;
      return out;
      }
   main(){
       hitung x;
      cin>>x;
      x.hitung_jarak();
      cout<<x;
      getch();
      return 0;
      }



flowchart:

print the number is divisible by 5 and 7 between 1 to 100 are then converted into a recursive iterative

#include <iostream>
#include <string>

using namespace std;

class Bagi{
      friend istream& operator>>(istream&, Bagi &);
      friend ostream& operator<<(ostream&, Bagi&);
      public:
       Bagi();
       void proses();
       int bagi(int a);
       private:
       int a;
       };

Bagi::Bagi(){
cout<<"Menampilkan bilangan yang habis dibagi 5 dan 7 antara 1 sampai 100"<<endl;
             }

void Bagi::proses(){//iteratif
a =1;
while (!(a>100)){
if (a % 5==0 && a % 7==0){
cout << a << endl;
}else{}
a =a+1;
}
}
int Bagi::bagi (int a){//rekursif
if (a>100){
}else
{
if (a % 5==0 && a % 7==0)
{
cout << a << endl;      }
else
{}bagi(a+1);
}}

int main(){

    Bagi X;
    X.proses();
    X.bagi(1);

system("pause");
return 0;
}

 gambar flowchartnya:
iteratif
rekursif

menentukan nilai maksimum dan minimum dari n bilangan [array]

procedure maks_min(input data :larik; n:integer; output m1,m2:integer)
deklarasi
i:integer
deskripsi
m1 <-data[1]
m2 <-data[1]
for i <- 2 to n do
if (data[i]>m1) then m1 <- data[i];
if (data[i]<m2) then m2 <- data[i];
endfor

flowchartnya:

menentukan nilai maksimum dari n bilangan dgn [array]

function maksimum(input data :array [1..10] of integer, n:integer): integer
deklarasi
i,temp: integer
deskrips
temp <- data[1]
for i<- 2 to n do
temp <- maksimum2(temp, data[i])
maksimum <- temp

flowchartnya:
bersambung

mencari nilai deviasi standar dari n buah kata [array]

Fungsi std(input x:array[1--10] of integer, n:integer, rata:real):real
{diberikan n data kemudian dicari rata-ratanya}
deklarasi
i,jumlah:integer
deskripsi
jumlah <- 0
for i <- 1 to n do
jumlah <- jumlah + sqrt(x[i]-rata)
endfor
std<- sqrt(jumlah/(n-1))

flowchartnya:

mencari rata-rata dari n bilangan bulat [array]

rata-rata dari n bilangan bulat dengan menggunakan array
Fungsi rata(input x:array [1..10] of integer, n:integer):real
{diberikan n databkemudian dicari rata-ratanya}

deklarasi
 i, jumlah: integer
deskripsi
jumlah <-0
for i <- 1 to n do
jumlah<-jumlah +x[i]
endfor
rata<-jumlah/n

flowchartnya:

Senin, 09 April 2012

fungsi menentukan nilai terbesar dari 2 bilangan bulat

main

jalankan
maksimum2()

prosedur untuk menukar nilai dari dua variabel

menukar isi dua nilai a menjadi b, demikian pula sebaliknya. maka perlu tempat sementara (temp) sebelum nilai a ditukar dengan nilai b, karena tidak bisa begitu saja menukar nilai b, yang akan berakibat nilai b akan hilang.

prosedur tukar(input/output a: integer; b  integer)

main




tukar

Minggu, 25 Maret 2012

mencari nilai dari n! (n faktorial)

nilai n faktorial yaitu n!=1x2x3x.......x n
dengan 0!=1 atau 1!=1
misalnya: bila 3!=1x2x3
                 = 6

flowchartnya:

Jumat, 23 Maret 2012

mencari rata-rata dari n bilangan bulat positif

Rumus rata-rata yaitu jumlah data dibagi dengan banyaknya data,dengan xi adalah data ke-i
data=x
banyak data=n

Algoritma mencari rata-rata
{diberikan n data kemudian dicari rata-ratanya}
Deklarasi:
read(n)
jumlah <— 0
for i <— 1 to n do
read(x)
jumlah <— jumlah + x
endfor
rata <— jumlah/n
write(rata)


Flowchartnya: