Senin, 28 Mei 2012

sorting


#include <iostream.h>
#include <conio.h>
//using namespace std;
typedef int larik [10];//tipe data untuk merge
void baca_data(int A[], int n){
//proses input dan baca data
for (int i = 0; i < n; i++){
cout <<"Data ke - " << i + 1 <<" : ";
cin >> A[i];
}
}
void cetak_data(int A[], int n){
//cetak data
for (int i = 0; i < n; i++){
cout << A[i] <<" ";
}
}
void tukar_data(int *a, int *b){
//tukar data
int temp;
temp = *a;
*a = *b;
*b = temp;
}
void minimum(int A[], int dari, int n, int *tempat){
int i, min;
min = A[dari];
*tempat = dari;
for (i = dari + 1; i < n; i++)
if (A[i] < min){
min = A[i];
*tempat = i;
}
}
void bubble_sort(int x[], int n){
// bubble sort
for (int i = 0; i < n - 1; i++)
for (int j = i + 1; j < n; j++){
if (x[i] > x [j]) tukar_data (&x[i], &x[j]);
}
}
void selection_sort(int A[], int n){
// sellection sort
int i, t;
for (i = 0; i < n; i++){
minimum (A, i, n, &t);
tukar_data (&A[i], &A[t]);
}
}
void merge(larik a, int kiri, int tengah, int kanan){
int bagkir, postemp, bykel, i;
larik temp;
bagkir = tengah -1;
postemp = kiri;
bykel = kanan - kiri + 1;
while ((kiri <= bagkir) &&
(tengah <= kanan))
if ((a[kiri] <= a[tengah])){
temp[postemp] = a[kiri];
postemp = postemp + 1;
kiri = kiri + 1;
}
else {
temp[postemp] = a[tengah];
postemp = postemp + 1;
tengah = tengah + 1;
}
//kopi bagian kiri
while ((kiri <= bagkir)){
temp[postemp] = a[kiri];
postemp = postemp + 1;
kiri = kiri + 1;
}
//kopi bagian kanan
while ((tengah <= kanan)){
temp[postemp] = a[tengah];
postemp = postemp + 1;
tengah = tengah + 1;
}
//kopi ke aaray asal
for (i = 1; i <= bykel; i++){
a[kanan] = temp[kanan];
kanan = kanan -1;
}
}
void merge_sort(larik A, int kiri, int kanan){
int tengah;
if (kiri < kanan){
tengah = (kiri + kanan) / 2;
merge_sort(A, kiri, tengah);
merge_sort(A, tengah + 1, kanan);
merge(A, kiri, tengah + 1, kanan);
}
}
int main()
{
int data[10], n;
int pilih;
t1:
cout << "1. Bubble Sort\n2. Selection Sort\n3. Merge Sort\n\n";
cout << "Pilihan : ";
cin >> pilih;
switch (pilih){
case 1 : //bubble sort
cout <<"BUBBLE SORT";
cout <<"\n\nMasukan data : ";
cin >> n;
baca_data(data, n);
cout <<"Data yang anda masukan : ";
cetak_data(data, n);
cout<<endl;
bubble_sort(data, n);
cout <<"Setelah ditukar (Bubble Sort) : ";
cetak_data(data, n);
cout <<endl; break;
case 2 : //selection sort
cout <<"SELECTION SORT";
cout <<"\n\nMasukan data : ";
cin >> n;
baca_data(data, n);
cout <<"Data yang anda masukan : ";
cetak_data(data, n);
cout<<endl;
selection_sort(data, n);
cout <<"Setelah ditukar (Selection Sort): ";
cetak_data(data, n);
cout <<endl; break;
case 3 : //merge sort
cout <<"MERGE SORT";
cout <<"\n\nMasukan data : ";
cin >> n;
baca_data(data, n);
cout <<"Data yang anda masukan : ";
cetak_data(data, n);
cout<<endl;
merge_sort(data, 0, n - 1);
cout <<"Setelah ditukar (Merge Sort): ";
cetak_data(data, n);
cout <<endl; break;
default : cout <<"Ulangi !\n"; goto t1;
}
//system("PAUSE");
getch ();
return 0;
}


Selasa, 06 Desember 2011

Antrian market (Pamela)

 Antrian market (Pamela)
Definisi Queue
Queue bisa di artikan antrian, queue merupakan salah satu contoh aplikasi dari pembuatan double linked list yang cukup sering kita temui dalam kehidupan sehari-hari, misalnya saat Anda mengantri di loket untuk membeli tiket, saat di bank dan tempat-tempat lainnya. Istilah yang cukup sering dipakai seseorang masuk dalam sebuah antrian adalah enqueue. Dalam suatu antrian, yang datang terlebih dahulu akan dilayani lebih dahulu. Istilah yang sering dipakai bila seseorang keluar dari antrian adalah dequeue
Algoritma
 Disini kelompok kami mengambil judul tentang antrian market yaitu pamela di bagian salah satu loketnya dan kami mengambarkan bagaimana algoritma dari antrian tersebut...cekidoot
Dalam algoritma ini kita mengunakan rumus lokasi(i)=i
Langkah 1
è         Menyediakan jumlah maksimal dari antrian





                                      [0]                    [1]             [2]                [3]                 [4]
Langkah 2
   è Variable “A” masuk dalam antrian



                                      [0]                     [1]             [2]                [3]                 [4]
Langkah 3
à  variable “B,C,D,E” masuk dalam antrian




                                      [0]                    [1]             [2]                       [3]          [4]
Langkah 4
  è Variable “ A” di hapus dari antrian
è                 Variable “B” mengisi alamat milik “A” dan begitu juga dengan “C,D,E”




                                      [0]                     [1]               [2]               [3]                [4]

Langkah 5
 è  Memasukkan elemen variable baru “ F”



                                    [0]                    [1]               [2]                     [3]          [4]


Program c++

#include <cstdlib>
#include <iostream>
#include <conio.h>
#define maks 5


using namespace std;
class antri{
      friend ostream& operator<<(ostream&, const antri&);
      public:
             antri();
             int penuh(int);
             int kosong(int);
             void cetak();
             void enqueue(char);
             char dequeue();
             void enqueue1(char);
      private:
              char A[maks];
              int banyak;
      };
     
ostream& operator<<(ostream& out, const antri& s)
{ cout<<"\n isi queue : ";
  for (int i=0;i<s.banyak;i++)
  out<<s.A[i]<<"";
}


antri::antri(){banyak = 0;}

int antri::penuh(int s)
{ return s== maks ? 1:0;}
                        
int antri::kosong(int s)
{ return s== 0 ? 1:0;}

void antri::cetak()
{    cout<<endl;
     cout<<"\n isi queue : ";
for (int i=0;i<banyak;i++)
cout<<A[i]<<"";
}

void antri::enqueue(char x)
{
     cout<<endl;
     cout<<"\n elemen : \t "<<x<<"\tmasuk antrian " ;
     cout<<endl;
     if (A[0]=='0') {
          A[0] = x;
          banyak++;
          }
          else {
               for (int i=banyak;i>=0;i--)
               A[i+1] = A[i];
               A[0] = x;
               banyak++;
               }
          }

char antri::dequeue(){
     char temp=A[--banyak];
     cout<<endl;
     cout<<"\n hilangkan elemen -->"<<temp;
     cout<<endl;
     A[banyak]='0';
     return temp;
     }
    
void antri::enqueue1(char x)
{
     cout<<endl;
     cout<<"\n elemen : \t "<<x<<"\tmasuk antrian " ;
     cout<<endl;
     if (A[0]=='0') {
          A[0] = x;
          banyak++;
          }
          else {
               for (int i=banyak;i>=0;i--)
               A[i+1] = A[i];
               A[0] = x;
               banyak++;
               }
          }

int main(int argc, char *argv[])
{
antri q;
for(char i='A';i<'F';i++) {
         q.enqueue(i);
         cout<<q;
         }
         char p=q.dequeue();
         q.cetak();
         cout<<endl;
for(char i='F';i<'G';i++) {
         q.enqueue1(i);
         cout<<endl;
         cout<<q;
         }
cout<<endl;
cout<<endl;
system("PAUSE");
return EXIT_SUCCESS;
}

Program C++ antrian mengunakan link list
#include <cstdlib>
#include <iostream>

using namespace std;
class antri{

public:
antri();
void tambah(int);
void tambahbelakang(int);
void tampil();
void hapus(int);


private:
int data;
antri *berikut,*p;

};

antri::antri(){
p=NULL;
}

void antri::tambah(int info){
antri *q,*t;
if(p==NULL){
p=new antri;
p->data=info;
p->berikut=NULL;
}else{
q=p;
while(q->berikut != NULL)
q=q->berikut;
t=new antri;
t->data=info;
t->berikut=NULL;
q->berikut=t;
}

}


void antri::tambahbelakang(int nilai){
antri *q,*t;
if( p == NULL ) {
p = new antri;
p->data = nilai;
p->berikut = NULL;
} else {
q = p;
while( q->berikut != NULL )
q = q->berikut;
t = new antri;
t->data = nilai;
t->berikut = NULL;
q->berikut = t;
}

}

void antri::tampil(){
antri *i; for(i=p;i!=NULL;i=i->berikut){
cout<<i->data<<" "<<"-> ";
}


}

void antri::hapus(int target){
antri *q,*r;
q=p;
if(q->data==target){
p=q->berikut;
delete q;
return;
}
r=q;
while(q!=NULL){
if(q->data==target){
r->berikut=q->berikut;
delete q;
return;
}
r=q;
q=q->berikut;
}

}

int main(int argc, char *argv[]) {
cout<<"\t ========================================"<<endl;
cout<<"\t Program simulasi antrian market (pamela)"<<endl;
cout<<"\t ========================================"<<endl;
cout<<endl;

antri *link=new antri;
int banyak;
cout<<"maksimal antrian: ";
cin>>banyak;
 cout<<"maksimal antrian: ";
cin>>banyak;
int data[banyak];
for(int i=0;icout<<"Data ke-"<<<": ";="" cin>>data[i];
cout<<<" masuk="" antrian";="" cout<link->tambah(data[i]);
}
link->tampil();
int del;
cout<cout<<"data yang keluar dari antrian: ";
cin>>del;
link->hapus(del);
link->tampil();
int belakang;
cout<cout<<"Elemen baru yang masuk antrian : ";
cin>>belakang;
link->tambahbelakang(belakang);
link->tampil();
cout<
system("PAUSE");
return EXIT_SUCCESS;

} <<"><<":>

Jumat, 08 Juli 2011

Program Menghitung Nilai Mahasiswa

#include
main()
{
char a;
puts("Nilai mahasiswa");
printf("masukkan nilai angka=");scanf("%d",&a);
{if (a>=81) a= 'A';
else if ((a>=71) && (a<=80))a= 'B'; else if ((a>=61) && (a<=70))a ='C'; else if ((a>=41) &&(a<=60))a = 'D';
else a='E';
printf("hasil dalam huruf=%c\n\n",a);
}
}