Senin, 05 Maret 2012

Error Detection dan Error Correction

Ø  Error Detection 
Proses pelacakan kesalahan selama transmisi data  berlangsung, yaitu perubahan satu atau beberapa bit dari nilai “1″ ke “0″ atau sebaliknya. contoh : parity check, CRC.
·         Parity check : Menambahkan sebuah bit pada setiap pengiriman sejumlah bit, sehingga jumlah bit bernilai 1 selalu genap/ganjil. Parity bit dapat mendeteksi kesalahan 1 bit atau Kesalahan  bit dalam jumlah ganjil, namun tidak dapat mendeteksi  kesalahan  dalam jumlah genap
·         CRC “Cyclic redundancy check” : method yang umum digunakan untuk mendeteksi error . CRC beroperasi pada sebuah frame/block. Setiap block berukuran m bit yang akan dikirim akan dihitung CRC checksumnya (berukuran r bit), kemudian dikirim bersama2 dengan frame (dengan ukuran m+r bit).

Ø  Error Correction
·         Stop and Wait: salah satu metode error correction dimana blok data akan dikirim setelah ACK dari receiver diterima oleh transmitter terlebih dahulu
·         Go Back-N: salah satu metode error correction dimana apabila terdapat satu blok data yang rusak maka blok data tersebut dan blok selanjutnya akan dikirim ulang
·         Selective Repeat: salah satu metode error correction dimana apabila terdapat satu blok data yang rusak maka hanyak blok data tersebut yang akan dikirim ulang



Ø  Mengatasi Error Detection and Correction
Bila dijumpai kesalahan pada data yang telah diterima, maka perlu diadakan tindakan perbaikan atau diusahakan agar kesalahan ini jangan sampai memberikan dampak yang besar. Metode koreksi ini diantaranya adalah :
·         Subtitusi symbol
Bila ada data yang rusak maka komputer penerima mengganti bagian itu dengan karakter lain, sepertu karakter SUB yang berupa tanda tanya terbalik. Jika pemakai menjumpai karakter ini (pada program word-prossessor), maka berarti data yang diterima telah mengalami kerusakan, selanjutnya perbaikan dilakukan sendiri.
·         Mengirim data koreksi
Data yang dikirim harus ditambah dengan kode tertentu dan data duplikat. Bila penerima menjumpai kesalahan pada data yang diterima, maka perbaikan dilakukan dengan mengganti bagian yang rusak dengan data duplikat, tetapi cara ini jarang dilakukan.
·         Kirim ulang
Cara ini merupakan cara yang paling simpel, yaitu bila komputer penerima menemukan kesalahan pada data yang diterima, maka selanjutnya meminta komputer pengirim untuk mengirim mengulangi pengiriman data.

Jumat, 16 Desember 2011

ANTRIAN ( QUEUE )

Queue (antrian) adalah barisan elemen yang apabila elemen ditambah maka penambahannya berada di posisi belakang (rear) dan jika dilakukan pengambilan elemen dilakukan di elemen paling depan (front). Oleh karena itu, queue bersifat FIFO (first in first out).

Operasi-operasi dasar dari sebuah queue adalah : 
1.  Enqueue : proses penambahan elemen di posisi belakang 
2.  Dequeue : proses pengambilan elemen di posisi depan   

Selain operasi dasar di atas, ada pula  operasi-operasi lain yang dapat dilakukan 
terhadap sebuah queue yaitu : 
1.  Operasi pemeriksaan queue kosong (fungsi kosong) 
2.  Operasi pemeriksaan queue penuh (fungsi penuh). 
3.  Operasi inisialisasi queue (fungsi inisialisasi) 

Antrian Apotek K-24
Pada kasus antrian ini kami mengambil sistem antrian di apotek K-24. Sistem antrian pada apotek ini ada 2 yaitu antrian untuk pembelian obat dan antrian untuk periksa ke dokter. Pada antrian pembelian obat sistem antriannya yaitu pembeli memesan dan konsultasi obat apa yang akan dibeli kepada apoteker dan untuk pembeli lain yang datang baru yang ingin memesan obat untuk dibeli akan dilayani oleh apoteker yang lainnya. Lalu pembeli pertama menuju kasir dan pembeli selanjutnya akan mengantri dibelakang pembeli yang datang terlebih dahulu dengan membawa obat yang telah dipilih dan membayar obat tersebut di kasir. Jadi prosesnya akan berjalan terus seperti operasi dalam queue yaitu enqueue yang mana ada penambahan pembeli di posisi belakang dan dequeue yang mana ada pengambilan elemen di posisi depan maksudnya adanya proses pembayaran setelah itu pembeli yang sudah membayar meninggalkan antrian. Pada apotek ini terdapat banyak apoteker yang dapat melayani banyak pembeli namun untuk proses pembayaran harus dengan antrian karena satu kasir melayani banyak pembeli yang ingin membayar.

Gambaran :


Kasus yang ini yaitu antrian untuk periksa ke dokter yang ada di apotek k24. Sistem antrian nya pertama pasien melakukan pendaftaran, kemudian pasien diberi nomor antrian yang nantinya akan di panggil sesuai nomor antrian. Begitu pula dengan pasien berikutnya akan di panggil sesuai nomor antrian yang diberikan pada saat pendaftaran. Jadi pada dasarnya prinsipnya sama dengan antrian yang lain, yang mana ada proses enqueue dan dequeue yaitu ada penambahan elemen di belakang dan pengambilan elemen di depan.


Demikian kajian mengenai antrian pembelian obat dan periksa di apotek K-24 yang mana telah dijelaskan diatas. Dengan asumsi setiap pembeli yang pertama datang antri di paling depan dan dilayani terlebih dahulu, tentunya kita sudah sering menerapkannya di dalam kehidupan sehari-hari. Semoga bermanfaat.... :))

Senin, 17 Oktober 2011



Rules of the stack:

1. An item can only be added to the top.

2. An item can only be removed from the top.

3. An item can only be accessed from the top.

4. Items cannot be accessed or removed if the stack is empty.

Array Pushdown Stack


Stack (Tumpukan) adalah kumpulan elemen-elemen data yang disimpan dalam satu lajur linear. Kumpulan elemen-elemen data hanya boleh diakses pada satu lokasi saja yaitu posisi ATAS (TOP) tumpukan. Tumpukan digunakan dalam algoritma pengimbas (parsing), algoritma penilaian (evaluation) dan algoritma penjajahan balik (backtrack). Elemen-elemen di dalam tumpukan dapat bertipe integer, real, record dalam bentuk sederhana atau terstruktur.
Stack adalah suatu tumpukan dari benda. Konsep utamanya adalah LIFO (Last In First Out), benda yang terakhir masuk dalam stack akan menjadi benda pertama yang dikeluarkan dari stack.
Tumpukan disebut juga “Push Down Stack” yaitu penambahan elemen baru (PUSH)ndan penghapusan elemen dari tumpukann(POP). Contoh pada PDA (Push Down Automaton). Sistem pada pengaksesan pada tumpukan menggunakn system LIFO (Last In First Out), artinya elemen yang terakhir masuk itu yang akan pertama dikeluarkan dari tumpukan (Stack). Ilustrasi tumpukan (Stack) dapat digambarkan seperti tumpukan CD atau tumpukan sate. Stack merupakan suatu susunan koleksi data dimana dapat ditambahkan dan dihapus selalu dilakukan pada bagian akhir data, yang disebut dengan Top Of Stack.

contoh program

class StackApp
{
public static void main(String[] args)
{
StackX theStack = new StackX(10); // make new stack
theStack.push(20); // push items onto stack
theStack.push(40);
theStack.push(60);
theStack.push(80);
theStack.pop();
while( !theStack.isEmpty() ) // until it’s empty,
{ // delete item from stack
long value = theStack.pop();
System.out.print(value); // display it
System.out.print(” “);
} // end while
System.out.println(” “);
} // end main()
} // end class StackApp

Program Menggunakan Rekursif

Rekursif adalah pemanggilan ber ulang-ulang dalam fungsi.Berikut adalah salah satu contoh program dengan menggunakan rekursif 

#include<stdio.h>

#include<conio.h>
#include<iostream>
Using namespace std;

int pangkat(int j,int k){
int hasil;
if(k==0){hasil=1;}
else{
hasil=j*pangkat(j,k-1);
}
return(hasil);
}
Int main(){
Printf(“program perpangaktan \n\n”);
Int x,a,hasil;
Printf(“masukkan nilai x=”);scanf(“%d”,&x);
Printf(“masukkan nilai a=”);scanf(“%d”,&a);
Cout<<”hasil pemangkatan”<<x<<”^”<<a<<”=”<<pangkat(x,a); 

Jumat, 08 Juli 2011

Program Menu Matriks

Gabungan dari beberapa penghitungan matriks


#include <iostream.h>
#include <conio.h>
int m1[2][2],m2[2][2];
int input()
{

clrscr();
cout<<"\n matriks pertama \n";
for(int i=1;i<=2;i++)
{
for(int j=1;j<=2;j++)
{
cout<<"+ elemen ["<<i<<","<<j<<"]=";cin>>m1[i][j];
}
}
cout<<"\n matriks kedua \n";
for(int x=1;x<=2;x++)
{
for(int y=1;y<=2;y++)
{
cout<<"+ elemen ["<<x<<","<<y<<"]=";cin>>m2[x][y];
}
}
return 0;
}

int tampil()
{
clrscr();
cout<<"* matrik pertama :\n";
for(int i=1;i<=2;i++)
{
for(int j=1;j<=2;j++)
{
cout<<" "<<" ";
cout<<m1[i][j];
}
cout<<"\n";
}
cout<<"\n\n";
cout<<"* matriks kedua :\n";
for(int x=1;x<=2;x++)
{
for(int y=1;y<=2;y++)
{
cout<<" "<<" ";
cout<<m2[x][y];
}
cout<<"\n";
}
return 0;
}

int determinan()
{
int det1,det2;
tampil();
det1=-(m1[1][1]*m1[2][2])-(m1[1][2]*m1[2][1]);
cout<<"\n* determinan matriks 1 : "<<det1<<"\n";
det2=-(m2[1][1]*m2[2][2])-(m2[1][2]*m2[2][1]);
cout<<"\n* determinan matriks 2 : "<<det2;
return 0;
}

int tranpose()
{
tampil();
cout<<"\n* tranpose matriks pertama :\n ";
for(int i=1;i<=2;i++)
{
for(int j=1;j<=2;j++)
{
cout<<" "<<" ";
cout<<m1[j][i];
}
cout<<"\n";
}
cout<<"\n\n";

cout<<"\n* tranpose matriks kedua :\n ";

for(int x=1;x<=2;x++)
{
for(int y=1;y<=2;y++)
{
cout<<" "<<" ";
cout<<m2[y][x];
}
cout<<"\n";
}
return 0;
}

int penjumlahan()
{
int x;
tampil();
cout<<"\n* penjumlahan matriks \n";
for(int i=1;i<=2;i++)
{
for(int j=1;j<=2;j++)
{
x=m1[i][j]+m2[i][j];cout<<x;
cout<<" "<<" ";
}
cout<<"\n";
}
return 0;
}

int pengurangan()
{
int x;
tampil();
cout<<"\n* pengurangan matriks \n";
for(int i=1;i<=2;i++)
{
for(int j=1;j<=2;j++)
{
x=m1[i][j]-m2[i][j];cout<<x;
cout<<" "<<" ";
}
cout<<"\n";
}
return 0;
}

main()
{
int pil;
pil=1;

while(pil!=7){
clrscr();
cout<<"\n========MENU UTAMA==========\n";
cout<<"1. input matriks\n";
cout<<"2. tampilkan matriks\n";
cout<<"3. penjumlahan\n";
cout<<"4. pengurangan\n";
cout<<"5. determinan\n";
cout<<"6. tranpose\n";
cout<<"7. keluar\n";
cout<<"============================\n";
cout<<"pilihan anda : ";cin>>pil;
switch(pil){
case 1:{
input();break;
}
case 2:{
tampil();break;
}
case 3:{
penjumlahan();break;
}
case 4:{
pengurangan();break;
}
case 5:{
determinan();break;
}
case 6:{
tranpose();break;
}
}
getch();
}
return 0;
}

Program Merubah Array 2 Dimensi ke Array 1 Dimensi

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

int main(){
int array[10], b[10][10];
int n,m;

cout<<"masukan banyaknya kolom:"; cin>>n;
cout<<"masukan banyaknya baris:"; cin>>m;
for(int i=0; i<n; i++)
{for(int j=0; j<m; j++)
{cout<<"a["<<i<<","<<j<<"]="; cin>>b[i][j];}
}

for(int i=0; i<n; i++){
for(int j=0; j<m; j++){
cout<<b[i][j]<<" ";
}
cout<<endl;
}
int t=0;
for(int i=0; i<n; i++){
for(int j=0; j<m; j++)
{array[t]=b[i][j]; t++;}
}
for(int k=0; k<m*n; k++){
cout<<array[k]<<" ";}
return 0;
}

Program Merubah Array 1 Dimensi ke Array 2 Dimensi

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

int main(){
int array[10], b[10][10];
int n;

cout<<"masukan banyaknya data:"; cin>>n;
for(int i=0; i<n; i++)
{
cout<<"a["<<i<<"]"; cin>>array[i];}
int t=0;
for(int j=0; j<2; j++){
for(int k=0; k<(n/2); k++){
b[j][k]=array[t];
t++;
}
}

for(int l=0; l<2; l++){
for(int m=0; m<(n/2); m++){
cout<<b[l][m]<<" ";}
cout<<endl;
}
getch();
return 0;
}

Program Permutasi dan Kombinasi

#include <iostream.h>
#include <stdio.h>
#include <conio.h>
long int fak (long int x);
void main()




{
int n,r, Prts,pilihan,p;
char ulang;
do
{
clrscr();
cout<<"(c) Created 2010 by esa d'suryanta.Inc"<<endl<<endl;
cout<<"PERHITUNGAN KOMBINASI DAN PERMUTASI"<<endl;
cout<<"1. KOMBINASI"<<endl;
cout<<"2. PERMUTASI"<<endl;
cout<<"3. EXIT"<<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;

printf(" Permutasinya adalah: %d",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');
}

getch();
long int fak (long int n)
{
int f;
if (n<=1)
{
f=1;
}
else
{
f=n*fak(n-1);
}
return (f);
}

Program Matematika Dasar

#include < iostream.h >


int x;
float y, z;

void main () {

cout<<"BERMAIN MATEMATIKA SEDERHANA\n" << endl;

cout<<"Masukkan bilangan ke-1 : ";
cin >> x; // Input bilangan pertama

cout<<"Masukkan bilangan ke-2 : ";
cin >> y; // Input bilangan kedua

z = x + y; // Memproses penjumlahan
cout<<"\n\nHasil penjumlahan : ";
cout << z << endl; // Mencetak hasil penjumlahan

z = x - y; // Memproses pengurangan
cout<<"Hasil pengurangan : ";
cout << z << endl; // Mencetak hasil pengurangan

z = x * y; // Memproses perkalian
cout<<"Hasil perkalian : ";
cout << z << endl; // Mencetak hasil perkalian

z = x / y; // Memproses pembagian
cout<<"Hasil pembagian : ";
cout << z << endl; // // Mencetak hasil pembagian

cin.sync(); cin.clear();
cin.get ();

}

Proram C++ Menampilkan Nilai Huruf

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

void main()
{
cout<<"Program Nilai Huruf"<<endl;
int bil;
cout<<"Masukkan nilai bilangan : ";
cin>>bil;
if(bil>100 || bil<0)
cout<<"Inputan salah";
else if(bil>80)
cout<<"Nilai huruf = A";
else if(bil>75)
cout<<"Nilai huruf = B";
else if(bil>65)
cout<<"Nilai huruf = C";
else if(bil>45)
cout<<"Nilai huruf = D";
else
cout<<"Nilai huruf = E";
getch();
}




Sesuai dengan ketentuan , maka kita harus memastikan bahwa jika input diatas 100 atau dibawah 0 maka akan muncul pesan “Inputan salah”, oleh karena itu yang pertama diuji apakah input diatas 100 atau dibawah 0. Selanjutnya baru dilakukan pengujian terhadap nilai input untuk menentukan nilai huruf sesuai ketentuan .

Minggu, 03 Juli 2011

Program C++ Insertion Sort

Algoritma
Procedure Insertion Sort ( input/output data : larik, input n : integer )
Deskripsi
for i ß 1 to n do
temp = data[i]
j = i -1
while ( data[j]>temp dan j>=0 )
data[j+1] = data[j]
data[j+1] = temp
endwhile
endfor



Berikut programnya :
#include <iostream.h>
#include <conio.h>

int data[10],data2[10];
int n;

void tukar(int a, int b)
{
int t;
t = data[b];
data[b] = data[a];
data[a] = t;
}

void insertion_sort()
{
int temp,i,j;
for(i=1;i<=n;i++){
temp = data[i];
j = i -1;
while(data[j]>temp && j>=0)
{
data[j+1] = data[j];
j--;
}
data[j+1] = temp;
}
}
void main()
{
cout<<"===PROGRAM INSERTION SORT==="<<endl;
cout<<"Masukkan Jumlah Data : ";
cin>>n;
for(int i=1;i<=n;i++)
{
cout<<"Masukkan data ke "<<i<<" : ";
cin>>data[i];
data2[i]=data[i];
}

insertion_sort();
cout<<"Data Setelah di Sort : ";
for(int i=1; i<=n; i++)
{
cout<<" "<<data[i];
}
cout<<"\n\nSorting dengan insertion sort Selesai";
getch();
}

Program di atas adalah program penyisipan. Misal data pertama akan dibandingkan dengan data yang ada berikutnya.Jjika data kedua atau selanjutnya lebih kecil dari data yang ada pada data sebelumnya, dilakukan pertukaran data tempat atau posisi. Demikian pula, untuk data kedua sampai data terakhir yang dilakukan dengan cara yang sama.

Program C++ Selection Sort

Deskripsi
for i ß 1 to n-1 do
pos = i
for j ß i+1 to n do
if ( data[j]<data[pos])
pos = j
if (pos != 0 i) then
tukar(pos,i)
endif
endif
endfor
endfor

Berikut programnya :
#include <iostream.h>
#include <conio.h>

int data[10],data2[10];
int n;

void tukar(int a, int b)
{
int t;
t = data[b];
data[b] = data[a];
data[a] = t;
}
void selection_sort()
{
int pos,i,j;
for(i=1;i<=n-1;i++)
{
pos = i;
for(j = i+1;j<=n;j++)
{
if(data[j] < data[pos]) pos = j;
}
if(pos != i) tukar(pos,i);
}
}

void main()
{
cout<<"===PROGRAM SELECTION SORT==="<<endl;

cout<<"Masukkan Jumlah Data : ";
cin>>n;
for(int i=1;i<=n;i++)
{
cout<<"Masukkan data ke "<<i<<" : ";
cin>>data[i];
data2[i]=data[i];
}

selection_sort();
cout<<"Data Setelah di Sort : ";
for(int i=1; i<=n; i++)
{
cout<<" "<<data[i];
}
cout<<"\n\nSorting dengan selection sort Selesai";
getch();
}


Program di atas adalah program selection sort . Misalnya data pertama akan dibandingkan dengan data yang berikutnya untuk mencari data terkecil yang kemudian ditempatkan di sebelah kiri dan seterusnya

Program C++ Penjumlahan Big Integer

Algoritma :
Procedure big_integer ( input : digit , output : jumlah )
Deklarasi
digit : integer of array (input)
jumlah : integer of array (output)

Deskripsi
read(digit)
for i <= 0 to digit do
digit = input1[i]
write (input1[i])
for i <= 0 to digit do
digit = input2[i]
write (input2[i])
enfor
endfor
for i<= 0 to digit do
jumlah[i] = 0
endfor
read(jumlah)
for i <= digit-1 to 0 do
jumlah[i] = jumlah[i] + input1[i] + input2[i]
if ( jumlah[i] > 9 && I !=0 )
jumlah[i] = jumlah[i] % 10
jumlah[i – 1] = jumlah[i – 1] + 1
endif
endfor
for i <= 0 to digit do
jumlah[i]
endfor
write(jumlah)


Programnya :

#include <cstdlib>
#include <iostream>

using namespace std;

class big{
public:
big();
void masuk();
void beri_nilai();
void penjumlahan();
void keluar();
private:
int digit;
int input1[999];
int input2[999];
int jumlah[999];
};

big::big(){
cout<<"penjumlahan 2 bilangan dengan banyak digit"<<endl<<endl;
}

void big::masuk(){
cout<<"digit dari kiri"<<endl;
cout<<"banyaknya digit : ";
cin>>digit;
cout<<"\nbilangan pertama"<<endl;
for(int i=0;i<digit;i++){
cout<<"digit ke-"<<(i+1)<<" : ";
cin>>input1[i];
}
cout<<"bilangan : ";
for(int i=0;i<digit;i++){
cout<<input1[i];
}
cout<<endl;
cout<<"\nbilangan kedua"<<endl;
for(int i=0;i<digit;i++){
cout<<"digit ke-"<<(i+1)<<" : ";
cin>>input2[i];
}
cout<<"bilangan : ";
for(int i=0;i<digit;i++){
cout<<input2[i];
}
cout<<endl;
}

void big::beri_nilai(){
for(int i=0;i<digit;i++){
jumlah[i]=0;
}
}

void big::penjumlahan(){
for(int i=(digit-1);i>=0;i--){
jumlah[i]=jumlah[i]+input1[i]+input2[i];
if (jumlah[i] >9 && i !=0){
jumlah[i]=jumlah[i]%10;
jumlah[i-1]=jumlah[i-1]+1;
}
}
}

void big::keluar(){
cout<<"\nhasil penjumlahan : ";
for(int i=0;i<digit;i++){
cout<<jumlah[i];
}
cout<<endl<<endl;
}

int main(int argc, char *argv[])
{
big x;
x.masuk();
x.beri_nilai();
x.penjumlahan();
x.keluar();

system("PAUSE");
return EXIT_SUCCESS;
}



Program diatas adalah program untuk menjumlahkan bilangan bulat besar menggunakan sebuah array .

Program C++ Perkalian 2 Himpunan

#include <cstdlib>
#include <iostream>
#include <string>

using namespace std;

int main(int argc, char *argv[])
{
string a[10];
string b[10];
int n,m;

cout<<"Masukan Data A:";
cin>>n;
for(int x=0;x<n;x++)
{
cout<<"Data["<<x+1<<"]:";
cin>>a[x];
}
cout<<endl;
cout<<"Masukan Data B:";
cin>>m;
for(int y=0;y<m;y++)
{
cout<<"Data["<<y+1<<"]:";
cin>>b[y];
}

cout<<endl;
cout<<"AxB=";
for(int x=0;x<n;x++)
for(int y=0;y<m;y++)
{
cout<<"{("<<a[x]<<")("<<b[y]<<")}";
cout<<endl;
}

system("PAUSE");
return EXIT_SUCCESS;
}


Program yang digunakan untuk mengalikan dua himpunan ,jika ada dua himpunan,himpunan A dan himpunan B maka program akan kalikan anggota dari himpunan A dan B. Dengan  A x B . Program di atas menggunakan array dan telah diinput integer tipe data dan string.

Program C++ Menghitung Rata-rata Array 2 Dimensi

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

class penjualan{
public:
friend ostream& operator<<(ostream&, penjualan&);
void cetak_nama();
void masuk_data();
void hitung();
penjualan();
private:
char a[50],b[50],c[50],d[50],e[50];
int data[100][100];
int total[50],jumlah[50];
double rata[50];
};

penjualan::penjualan(){
cout<<"Data Sales"<<endl;
}

void penjualan::cetak_nama(){
int k=1;
cout<<"Masukkan Nama "<<k<<"=";cin>>a;
cout<<"Masukkan Nama "<<k+1<<"=";cin>>b;
cout<<"Masukkan Nama "<<k+2<<"=";cin>>c;
cout<<"Masukkan Nama "<<k+3<<"=";cin>>d;
cout<<"Masukkan Nama "<<k+4<<"=";cin>>e;
}

void penjualan::masuk_data(){
for(int i=0; i<5; i++)
for(int j=0; j<5; j++){
cout<<"Masukkan data ke ["<<i+1<<"] ["<<j+1<<"] :";
cin>>data[i][j];

}
}

void penjualan::hitung(){
for(int i=0; i<5; i++){
total[i]=0;
jumlah[i]=0;
for(int j=0; j<5; j++){
total[i]=total[i]+data[i][j];
jumlah[i]=jumlah[i]+data[j][i];
}}
rata[0]=0;
jumlah[5]=0;
for(int i=0; i<5; i++){
rata[i]=(rata[i]+(jumlah[i]/5));
jumlah[5]=jumlah[5]+jumlah[i];
}
}

ostream& operator<<(ostream& out,penjualan& m){
out<<"No\tNama\tJan\tFeb\tMar\tApr\tMei\tTotal"<<endl;
out<<"1.";
out<<"\t";
for(int i=0; i<strlen(m.a); i++){
out<<m.a[i];
}
out<<"\t";
for(int i=0; i<5; i++){
out<<m.data[0][i]<<"\t";
}
out<<m.total[0];
out<<endl;
out<<"2.";
out<<"\t";
for(int i=0; i<strlen(m.b); i++){
out<<m.b[i];
}
out<<"\t";
for(int i=0; i<5; i++){
out<<m.data[1][i]<<"\t";
}
out<<m.total[1];
out<<endl;
out<<"3.";
out<<"\t";
for(int i=0; i<strlen(m.c); i++){
out<<m.c[i];
}
out<<"\t";
for(int i=0; i<5; i++){
out<<m.data[2][i]<<"\t";
}
out<<m.total[2];
out<<endl;
out<<"4.";
out<<"\t";
for(int i=0; i<strlen(m.d); i++){
out<<m.d[i];
}
out<<"\t";
for(int i=0; i<5; i++){
out<<m.data[3][i]<<"\t";
}
out<<m.total[3];
out<<endl;
out<<"5.";
out<<"\t";
for(int i=0; i<strlen(m.e); i++){
out<<m.e[i];
}
out<<"\t";
for(int i=0; i<5; i++){
out<<m.data[4][i]<<"\t";
}
out<<m.total[4];
out<<endl;
out<<"\ttotal\t";
for(int i=0; i<5; i++){
out<<m.jumlah[i]<<"\t";
}
out<<m.jumlah[5];
out<<endl;
out<<"\trata2\t";
for(int i=0; i<5; i++){
out<<m.rata[i]<<"\t";
}
out<<"Tot Penj 5 Bln";
out<<endl;
}
int main()
{
penjualan z;
z.cetak_nama();
z.masuk_data();
z.hitung();
cout<<z;

system("PAUSE");
return EXIT_SUCCESS;
}


Array dua dimensi yang menghitung jumlah data, menghitung rata-rata dan kemudian membuat tampilan seperti tabel menggunakan array dua dimensi.
Program di atas adalah program dua-dimensi array fungsi menghitung jumlah data dan rata-rata

Program C++ Pointer

Algoritma :
Deklarasi
data : integer
*berikut : pointer

Deklarasi
read(data)
node*baru
baru=new node
baru->data=5
baru->berikut=NULL
write (baru->data)
//untuk menyisipkan data selanjutnya

 programnya :

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

class node{
public:
int data;
node*berikut;
};

void main()
{
//langkah 1
node*baru;
baru=new node;
baru->data=5;
baru->berikut=NULL;
cout << "isi data node baru adalah "<<baru->data<<endl;

//langkah 2
node*lain;
lain=new node;
lain->data=6;
lain->berikut=NULL;
cout << "isi data node lain adalah "<<lain->data<<endl;

//langkah 3
baru->berikut=lain;
cout << "isi node lain dicetak dari node baru adalah ";
cout << baru->berikut->data<<endl;

//langkah 4
node*kepala=baru;
cout << "mencetak node pertama dari pointer kepala ";
cout << kepala->data<<endl;
cout << "mencetak node kedua dari pointer kepala : ";
cout << kepala->berikut->data<<endl;

//lagkah 5: jalankan pointer
cout << "menggunakan perulangan untuk mencetak setiap data pada rantai\n";
node*jalan=kepala;
int i=1;
while(jalan!=NULL)
{
cout << "data ke"<<i<<">"<<jalan->data<<endl;
i++;
jalan=jalan->berikut;
}
//langkah 6: bukti bahwa pointer kepala tidak kehilangan data
cout << "mencetak node pertama dari pointer kepala : ";
cout << kepala->data<<endl;
cout << "mencetak node kedua dari pointer kepala : ";
cout << kepala->berikut->data<<endl;
}


Dengan menggunakan pointer  Dengan menggunakan pointer, variabel dapat dibuat atau dihapus selama eksekusi program, variabel (objek) secara dinamis.
implementasi dari pointer dalam program ini kita menyisipkan data baru di depan, belakang atau di tengah. .

Sabtu, 04 Juni 2011

Program Deret Fibonacci

Program Deret Fibonacci

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

main()
{
int s0, s1, s2, fib, nsuku;

clrscr();
printf("Masukkan Suku ke: ");
scanf("%d", &nsuku);

if (nsuku<=1)
fib=nsuku;
else
{
s0=0;
s1=1;
s2=2;
while (s2<=nsuku)
{
fib=s0+s1;
s0=s1;
s1=fib;
s2++;
}
}
printf("Bilangan Fibonacci ke-%d adalah %d\n", nsuku, fib);
getch();
}

Program Deret Aritmatika

Program Deret Aritmatika
#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
//deklarasi data
float a,b,n,un,sn;
int x;
//badan program
printf("Program Penghitung Deret Aritmatika");
printf("\nMasukkan:");
printf("\nSuku ke n = ",n);
scanf("%f",&n);

a = 1.0;
b = 2.0;

un = a + (n-1)*b;
sn = (0.5*n)*(a+un);

printf("\nMaka Nilai dari Un = %f\n",un);
printf("\nNilai Sn = %f\n",sn);

printf("\nSelanjutnya\n");
printf("\nUn = %f\n",un);
printf("\nDeret aritmatika untuk %f adalah :\n\n",un);

for(x=a;x<=un;x=x+b) { printf("+%i ",x);  }
system("PAUSE");
return EXIT_SUCCESS;    }

Program Memindahkan Isi dalam Variabel Ke Variabel Lain

Algoritma :
Deskripsi
a,b, t   : integer
Deklarasi
t = a
a = b
b = t

Berikut programnya :

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

class memindahkan{
friend istream& operator >> (istream&, memindahkan&);
friend ostream& operator << (ostream&, memindahkan&);

public :
memindahkan();
void tukar(){
   t=a ;
   a=b ;
   b=t ;
};

private :
   int a,b;
   int t;
};

memindahkan::memindahkan(){
   cout<<"memindahkan bilangan antar variable"<<endl;
}

istream& operator >> (istream& cin, memindahkan& masukan){
   cout<<"isikan nilai a : ";
   cin>>masukan.a;
   cout<<"isikan nilai b : ";
   cin>>masukan.b;
   cout<<endl;

return cin;
}

ostream& operator << (ostream& out, memindahkan& keluar){
   out<<"hasil setelah di pindah\n"<<endl;
   out<<"nilai a : "<<keluar.a<<endl;
   out<<"nilai b : "<<keluar.b<<endl;

return out;
}

 void main(){
memindahkan nilai;
cin>>nilai;
nilai.tukar();
cout<<nilai;

getch();
}