Senin, 23 April 2012

Dasar Operasi String di C++


Tipe data string (nama lain array karakter) sangat sering dipakai dalam pembuatan program, khususnya yang berkaitan dengan pengolahan data berupa kata-kata (kumpulan huruf alpha numerik). Semua bahasa pemrograman mendukung penggunaan konsep string, bahkan untuk bahasa pemrograman generasi terbaru (semisal java, delphi, VB) telah memiliki tipe data string sendiri, bukan lagi memakai array karakter. Lebih dari itu dalam konsep OOP, class string sudah dilengkapi dengan fungsi-fungsi standar yang komplit.
Dalam artikel ini saya akan membahas satu bagian kecil saja tentang string dalam bahasa C++. Kunci utama mengolah tipe data string adalah dengan memahami aturan bahwa karakter terakhir (ujung belakang) sebuah data string SELALU berisi karakter NULL (”). Aturan ini perlu kita camkan ketika akan membuat fungsi-fungsi manipulasi data string, antara lain: menghitung panjang string, menggabungkan dua buah string, mengkopi isi string, mencari data ke dalam string, memotong bagian dalam sebuah string, dst.
Contoh yang akan saya tunjukkan disini adalah program untuk menghitung panjang sebuah string. Perlu Anda ketahui bahwa sebenarnya fungsi-fungsi baku manipulasi string sebenarnya sudah difasilitasi oleh bahasa C++ dengan memakai library string.h, programmer tinggal memanggil fungsinya. Namun tujuan saya membuat contoh ini adalah lebih untuk menguatkan ketrampilan dalam coding bukan sekedar menggunakan.
Dalam library string.h sudah terdapat fungsi length() untuk mengetahui panjang sebuah string. Disini kita akan belajar membuat program yang tujuannya sama denga fungsi length() tersebut. Perhatikan source code berikut:
#include “stdio.h”
void main()
{
char namaku[30];
printf(“Ketikkan Nama = “); gets(namaku);
printf(“Panjang Nama Anda = “);
for(int i=0; namaku[i] != ”; i++); //loop sampai ketemu NULL
printf(“%d karakter”, i); //i berisi info panjang string
}
Penjelasan:
Teknik menghitung panjang string di atas adalah dengan membaca satu demi satu isi array
karakternya. Selama karakter yang dibaca bukanlah karakter NULL maka i akan terus bertambah satu. Dengan demikian i-lah yang menampung info tentang jumlah karakter di dalam string. Berani mencoba? Selamat Belajar! 


string strstr c++ 

#include
 
#include 
main(){ 
char kata1[10]="algo"; 
char kata2[10]="algoritma"; 
if(strstr(kata2,kata1)){ 
cout<<"substring algo trdapat pada algoritma"<
 } 
getch(); 
return 0; 


string strupr C++ 
#include 
#include 
main(){ 
char s[10]="algoritma"; 
cout<
 getch(); 
return 0; 
} 



string c++ 
#include 
#include 
main(){ 
char c='a'; 
char s[10]="algoritma"; 
cout<<"karakter="<<c<
 cout<<"string="<<s<
 getch(); 
return 0; 
}</s<</c<







Selasa, 17 April 2012

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:

Program Sederhana Array C++

#include <iostream.h>

#include <stdio.h>

#include <conio.h>

#include <math.h>

void input(int x[],int n)

{

for (int i=1;i<=n;i++)

{cout<<”Masukan Nilai “<<i<<” : “;cin>>x[i];}

}

void tinggi(int x[],int n)

{

int max,min;

max = x[1];

min = x[1];

for (int i=2;i<=n;i++)

{

if (max < x[i])

max = x[i];

if (min > x[i])

min = x[i];

}

cout<<”\nNilai tertinggi = “<<max<<”\n”;

cout<<”Nilai terendah = “<<min<<”\n”;

}

double rata(int x[],int n)

{

double a,b;

a = 0;

for (int i=1;i<=n;i++)

{

a = a + x[i];

}

b = a/n;

cout<<”Rata-Rata : “<<a<<”/”<<n<<” = “<<b;

}

void main()

{

int p[50],N;

cout<<”Banyaknya Data : “;cin>>N;

cout<<endl;

input(p,N);

tinggi(p,N);

rata (p,N);

getch();

}

flowchart mencari bilangan ganjil dari 0-10 menggunakan perulangan for

Image

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

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;
           }

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;
}

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:

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);
    }

Web sederhana dengan html

===========================================================
index.html
===========================================================

<html>
<head>
</head>
<body>


<table align="center" width="100%" border="4" height="100%">
    <tr align="center">
    <td colspan="3">
        <center><IMG SRC="Penguins.jpg" width="500px" heigth="1600px"></center>
       
    </td>
    </tr>
    <tr align="left"><td><br /><b>BIODATA KELOMPOK</b>
                <br />NAMA    : Wahyu (09018194)
                <br />NAMA    : Rasyid (09018191)
                <br />NAMA    : Mucklis (09018179)
                <br />NAMA    : Estu (09018193)
            </td>
                <td>

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;
         }                 

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;
}

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;
}

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;
}