Selasa, 19 April 2011

GCD

Algoritma GCD
(c,d : integer) : integer
Versi Iteratif
Versi Rekursif
Deskripsi
While (d>0) do
r < c mod d
c  < d {menyimpan harga r terakhir}
d < r {harga  r terakhir untuk
menghentikan perulangan}
end while
gcd < c
Deskripsi
if(d=0) then gcd < c
else if (c<d) then gcd < gcd(d,c)
else gcd < gcd (c, -d, d)


Listing
  • Iteratif
#include <cstdlib>
#include <iostream>
#include <conio.h>

using namespace std;
class GCD{
      friend ostream& operator<<(ostream&, GCD&);
      friend istream& operator>>(istream&, GCD&);
      public:
             int HitungGCD(int,int);
      private:
              int x,y;
              };
     
      int GCD::HitungGCD(int c,int d){
          int r;
          while(d>0){
                      r=c%d;
                      c=d;
                      d=r;
                      }
          return(c);
          }
      istream& operator>>(istream& in,GCD& a){
               cout<<"MASUKKAN BILANGAN PERTAMA   : ";
               in>>a.x;
               cout<<"MASUKKAN BILANGAN KEDUA     : ";
               in>>a.y;
               return in;
               }
      ostream& operator<<(ostream& out, GCD& a){
               out<<"GCD (" << a.x << "," << a.y << ") = ";
               out<<a.HitungGCD(a.x,a.y);
               return out;
               }
       
int main(int argc, char *argv[])
{
    GCD run;
    cin>>run;
    cout<<run;
    getch();
    return 0;
}

  • Rekursif
int HitungGCD(int c, int d)
      {
          if(d==0)return(c);
          if(c<d)return(HitungGCD(d,c));
          return(HitungGCD(c-d, d));
      }


Sabtu, 16 April 2011

PRIMA

Algoritma prima
{untuk mencari bilangan prima dari suatu angka}
Deklarasi
prima : integer
Deskripsi
float sqrtn=sqrt(p)
if(p<2)
return 0
else if(p<4)
return 1
else if(p%2==0)
return 0
else
for(int d=3;d<=sqrtn; d+=2)
if(p%d==0)


Listing

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


using namespace std;
class prima{
     friend istream& operator>>(istream&,prima&);
     friend ostream& operator<<(ostream&,prima&) ;
    
private:
int a,b,z,d;
   
 public:
        int prim(int );
        void cetak();
        };
 int prima::prim(int p){
            float sqrtn=sqrt(p);
   if(p<2)
            return 0;
   else if(p<4)
            return 1;
   else if(p%2==0)
            return 0;
   Else
            for(int d=3;d<=sqrtn; d+=2)
            if(p%d==0)

   return 0;
   return 1;
      }

         
istream& operator>>(istream& in,prima& x){
      cout<<"MASUKKAN BILANGAN          : ";in>>x.a;
         return in;
         }
ostream& operator<<(ostream& out,prima& x){
    
for (int z=1;z<=x.a;z++){
            if(x.a%z==0)
                        if(x.prim(z))
            out << z << " ";
}
              
         return out;
         }


int main(){
  prima a;
            cin >> a;
            cout<<a;
getch();
return 0;
}


KALENDER

Algoritma kalender
{masukkan integer 1 sampai 7, akan ditentukan hari apa yang sesuai}
Deklarasi
hari_ke : integer
hari : string
Deskripsi
read(hari_ke);
case(hari_ke)of
1 : hari = 'senin'
2 : hari = 'selasa'
3 : hari = 'rabu'
4 : hari = 'kamis'
5 : hari = 'jum"at'
6 : hari = 'sabtu'
else hari = 'minggu'
endcase
write(hari)


Listing

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

using namespace std;
class Kalender{
      friend istream& operator>>(istream&, Kalender&);
      friend ostream& operator<<(ostream&, Kalender&);
     
public:
       Kalender(){};
       void adalah();
private:
        int hari_ke;
        char *hari;
};

void Kalender::adalah(){
     switch (hari_ke){
            case 1 : hari = "senin"; break;
            case 2 : hari = "selasa";break;
            case 3 : hari = "rabu"; break;
            case 4 : hari = "kamis";break;
            case 5 : hari = "jum'at"; break;
            case 6 : hari = "sabtu";break;
            case 7 : hari = "minggu";break;
            default : hari = "SALAH !!";break;
            }}
           
     istream& operator>>(istream& in, Kalender& masukan){
              cout<<"MASUKKAN HARI KE - ";
              in>>masukan.hari_ke;
              return in;
              }

ostream& operator<<(ostream& out, Kalender& keluaran){
out<<"HARI KE - " <<keluaran.hari_ke<<" adalah "<<keluaran.hari<<endl;
return out;
}

int main(){
Kalender tanggal;
cin>>tanggal;
tanggal.adalah();
cout<<tanggal;
getch();
return 0;
}