Download
/*karena format HTML, maka semua karakter lebih besar (>) dan lebih kecil (<) diganti dengan karakter ((>)) dan ((<)) sorry (^-^)*/
#include (<)stdio.h(>)
#include (<)stdlib.h(>)
#include (<)conio.h(>)
#include (<)string.h(>)
#define maxel 10
typedef char str[20];
typedef struct{
int nopesanan;
char namaobat[15];
int jumlahobat;
float hargaobat;
float totalobat;
}medi;
typedef struct{
medi elmn[maxel];
int head;
int tail;
}obat;
void init(obat *a);
void add(obat *a, obat *all);
void tampil(obat a);
void hapus(obat *a, obat *all);
void cari(obat a, int numb);
float totalharga(obat a);
void input(obat *a, obat *all,int x);
void show(obat a, int i);
void copi(obat a,obat *o,int i,int j);
int isempty(obat a);
int isfull(obat a);
int isoneelmn(obat a);
float totalpendapatan(obat a);
void cariobatterbanyak(obat all);
void edit(obat *a,obat *all, int no);
float diskon(obat a);
void pesan3kali(obat all);
void rekap(obat *y, str x, int jml);
void hapusrekap(obat *y, str x, int jml);
void init(obat *a)
{
(*a).head=(*a).tail=-1;
}
float totalharga(obat a)
{
return (a.elmn[a.tail].hargaobat * a.elmn[a.tail].jumlahobat);
}
int isempty(obat a)
{
return(a.head==-1&&a.tail==-1);
}
int isfull(obat a)
{
return((a.head(<)a.tail && a.tail-a.head==maxel-1) || (a.head(>)a.tail && a.head-a.tail==1));
}
int isoneelmn(obat a)
{
return(a.head==a.tail && a.head!=-1);
}
void input(obat *a, obat *all,int x)
{
do
{
printf("Masukkan no pesanan : ");scanf("%d",&(*a).elmn[(*a).tail].nopesanan);
if((*a).elmn[(*a).tail].nopesanan(<)=x)
printf("\nMaaf No Pesanan yang dimasukkan harus lebih besar daripada yang sebelumnya (%d)\n",x);
}while((*a).elmn[(*a).tail].nopesanan(<)=x);
printf("Masukkan nama obat : ");scanf("%s",&(*a).elmn[(*a).tail].namaobat);
do
{
printf("Masukkan jumlah obat : ");scanf("%d",&(*a).elmn[(*a).tail].jumlahobat);
if((*a).elmn[(*a).tail].jumlahobat(<)5)
printf("\nMaaf, Jumlah yang harus dibeli harus >= 5\n");
}while((*a).elmn[(*a).tail].jumlahobat(<)5);
rekap(&(*all),(*a).elmn[(*a).tail].namaobat,(*a).elmn[(*a).tail].jumlahobat);
printf("Masukkan harga obat : ");scanf("%f",&(*a).elmn[(*a).tail].hargaobat);
(*a).elmn[(*a).tail].totalobat=totalharga((*a));
(*a).elmn[(*a).tail].totalobat-=diskon((*a));
printf("total biaya obat : %f",(*a).elmn[(*a).tail].totalobat);
}
void show(obat a, int i)
{
printf("\n\nDaftar ke %d",i+1);
printf("\nno pesanan : %d",a.elmn[i].nopesanan);
printf("\nnama obat : %s",a.elmn[i].namaobat);
printf("\njumlah obat : %d",a.elmn[i].jumlahobat);
printf("\nharga obat : %f",a.elmn[i].hargaobat);
printf("\ntotal biaya obat : %f",a.elmn[i].totalobat);
}
void add(obat *a, obat *all)
{
int x;
if(isfull((*a)))
printf("Antrian Penuh");
else
{
if(isempty((*a)))
{
x=0;
(*a).head=(*a).tail=0;
input(&(*a),&(*all),x);
}
else
{
if((*a).tail==maxel-1)
{
x=(*a).elmn[(*a).tail].nopesanan;
(*a).tail=0;
}
else
{
x=(*a).elmn[(*a).tail].nopesanan;
(*a).tail++;
}
input(&(*a),&(*all),x);
}
}
}
void tampil(obat a)
{
int i;
if(a.head<=a.tail)
{
for(i=a.head;i<=a.tail;i++)
show(a,i);
}
else
{
for(i=a.head;i(<)maxel;i++)
show(a,i);
for(i=0;i<=a.tail;i++)
show(a,i);
}
}
void copi(obat a,obat *o,int i,int j)
{
(*o).elmn[j].nopesanan=a.elmn[i].nopesanan;
strcpy((*o).elmn[j].namaobat,a.elmn[i].namaobat);
(*o).elmn[j].jumlahobat=a.elmn[i].jumlahobat;
(*o).elmn[j].hargaobat=a.elmn[i].hargaobat;
(*o).elmn[j].totalobat=a.elmn[i].totalobat;
}
void hapus(obat *a, obat *all)
{
obat o;
int j;
j=(*a).head;
copi((*a),&o,(*a).head,j);
if(!isempty(*a))
{
if(isoneelmn((*a)))
{
init(&(*a));
init(&(*all));
}
else
{
if((*a).head==maxel-1)
(*a).head=0;
else
(*a).head++;
}
show(o,j);
hapusrekap(&(*all),o.elmn[j].namaobat,o.elmn[j].jumlahobat);
}
else
printf("Antrian Kosong");
}
void cari(obat a, int numb)
{
int i,temp=-1;
if(a.head<=a.tail)
{
for(i=a.head;i<=a.tail;i++)
{
if(numb==a.elmn[i].nopesanan)
temp=i;
}
}
else
{
for(i=a.head;i(<)maxel;i++)
{
if(numb==a.elmn[i].nopesanan)
temp=i;
}
for(i=0;i<=a.tail;i++)
{
if(numb==a.elmn[i].nopesanan)
temp=i;
}
}
if(temp==-1)
printf("Tidak ditemukan");
else
show(a,temp);
}
float totalpendapatan(obat a)
{
float tot=0;
int i;
if(a.head<=a.tail)
{
for(i=a.head;i<=a.tail;i++)
tot+=a.elmn[i].totalobat;
}
else
{
for(i=a.head;i(<)maxel;i++)
tot+=a.elmn[i].totalobat;
for(i=0;i<=a.tail;i++)
tot+=a.elmn[i].totalobat;
}
return tot;
}
void cariobatterbanyak(obat all)
{
int i,temp;
if(all.head<=all.tail)
{
temp=all.head;
for(i=all.head+1;i<=all.tail;i++)
{
if(all.elmn[i].jumlahobat(>)all.elmn[temp].jumlahobat)
temp=i;
}
}
else
{
for(i=all.head;i(<)maxel;i++)
{
if(all.elmn[i].jumlahobat(>)all.elmn[temp].jumlahobat)
temp=i;
}
for(i=0;i<=all.tail;i++)
{
if(all.elmn[i].jumlahobat(>)all.elmn[temp].jumlahobat)
temp=i;
}
}
printf("Jumlah Obat dengan Pemesanan Terbanyak adalah : %s sebanyak %d",all.elmn[temp].namaobat,all.elmn[temp].jumlahobat);
}
void edit(obat *a, obat *all, int no)
{
int i,temp=-1;
if((*a).head<=(*a).tail)
{
for(i=(*a).head;i<=(*a).tail;i++)
{
if(no==(*a).elmn[i].nopesanan)
temp=i;
}
}
else
{
for(i=(*a).head;i(<)maxel;i++)
{
if(no==(*a).elmn[i].nopesanan)
temp=i;
}
for(i=0;i<=(*a).tail;i++)
{
if(no==(*a).elmn[i].nopesanan)
temp=i;
}
}
if(temp==-1)
printf("Tidak ditemukan");
else
{
hapusrekap(&(*all),(*a).elmn[temp].namaobat,(*a).elmn[temp].jumlahobat);
printf("Masukkan Nama Obat : ");scanf("%s",&(*a).elmn[temp].namaobat);
do
{
printf("Masukkan Jumlah Obat : ");scanf("%s",&(*a).elmn[temp].jumlahobat);
}while((*a).elmn[temp].jumlahobat(<)5);
printf("Masukkan harga Obat : ");scanf("%s",&(*a).elmn[temp].hargaobat);
(*a).elmn[temp].totalobat=(*a).elmn[temp].jumlahobat*(*a).elmn[temp].hargaobat;
if((*a).elmn[(*a).tail].jumlahobat(>)20&&(*a).elmn[(*a).tail].jumlahobat(<)31)
(*a).elmn[temp].totalobat-=((*a).elmn[temp].totalobat*0.05);
else if((*a).elmn[temp].jumlahobat(>)30&&(*a).elmn[temp].jumlahobat(<)51)
(*a).elmn[temp].totalobat-=((*a).elmn[temp].totalobat*0.07);
else if((*a).elmn[temp].jumlahobat(>)50)
(*a).elmn[temp].totalobat-=((*a).elmn[temp].totalobat*0.1);;
printf("Total harga Obat : %f",(*a).elmn[temp].totalobat);
rekap(&(*all),(*a).elmn[temp].namaobat,(*a).elmn[temp].jumlahobat);
}
}
float diskon(obat a)
{
if(a.elmn[a.tail].jumlahobat(>)20&&a.elmn[a.tail].jumlahobat(<)31)
return a.elmn[a.tail].totalobat*0.05;
else if(a.elmn[a.tail].jumlahobat(>)30&&a.elmn[a.tail].jumlahobat(<)51)
return a.elmn[a.tail].totalobat*0.07;
else if(a.elmn[a.tail].jumlahobat(>)50)
return a.elmn[a.tail].totalobat*0.1;
else
return 0;
}
void pesan3kali(obat all)
{
int i;
printf("Obat yang dipesan lebih dari 3 kali adalah : ");
if(all.head<=all.tail)
{
for(i=all.head;i<=all.tail;i++)
{
if(all.elmn[i].nopesanan>=3)
printf("\n- %s dipesan %d kali",all.elmn[i].namaobat,all.elmn[i].nopesanan);
}
}
else
{
for(i=all.head;i(<)maxel;i++)
{
if(all.elmn[i].nopesanan>=3)
printf("\n- %s dipesan %d kali",all.elmn[i].namaobat,all.elmn[i].nopesanan);
}
for(i=0;i<=all.tail;i++)
{
if(all.elmn[i].nopesanan>=3)
printf("\n- %s dipesan %d kali",all.elmn[i].namaobat,all.elmn[i].nopesanan);
}
}
}
void rekap(obat *y, str x, int jml)
{
int ix=-1,i;
if(isempty(*y))
{
(*y).head=(*y).tail=0;
strcpy((*y).elmn[(*y).tail].namaobat,x);
(*y).elmn[(*y).tail].jumlahobat=jml;
(*y).elmn[(*y).tail].nopesanan=1;
}
else
{
for(i=(*y).head;i<=(*y).tail;i++)
{
if(strcmp((*y).elmn[i].namaobat,x)==0)
ix=i;
}
if(ix==-1)
{
(*y).tail++;
strcpy((*y).elmn[(*y).tail].namaobat,x);
(*y).elmn[(*y).tail].jumlahobat=jml;
(*y).elmn[(*y).tail].nopesanan=1;
}
else
{
(*y).elmn[ix].jumlahobat+=jml;
(*y).elmn[ix].nopesanan++;
}
}
}
void hapusrekap(obat *y, str x, int jml)
{
int ix,i;
if(isoneelmn((*y)))
{
(*y).elmn[(*y).tail].jumlahobat-=jml;
}
else
{
for(i=(*y).head;i<=(*y).tail;i++)
{
if(strcmp((*y).elmn[i].namaobat,x))
{
ix=i;
}
}
(*y).elmn[ix].jumlahobat-=jml;
if((*y).elmn[ix].jumlahobat==0)
{
if(ix==(*y).tail)
(*y).tail--;
else
for(i=ix;i<=(*y).tail;i++)
{
(*y).elmn[i].nopesanan=(*y).elmn[i+1].nopesanan;
(*y).elmn[i].jumlahobat=(*y).elmn[i+1].jumlahobat;
strcpy((*y).elmn[i].namaobat,(*y).elmn[i+1].namaobat);
(*y).tail--;
}
}
}
}
void main()
{
obat q,l;
int pil,number;
init(&q);
init(&l);
do
{
system("cls");
printf("head = %d , tail = %d\n",q.head,q.tail);
puts("\nMENU\n");
puts("1.Pesan Obat\n");
puts("2.Tampilkan Daftar obat\n");
puts("3.Hapus Pesanan\n");
puts("4.Cari Dengan no Pesanan\n");
puts("5.Total Pendapatan\n");
puts("6.Cari Jumlah Obat Terbanyak\n");
puts("7.Edit\n");
puts("8.Obat yang dipesan lebih dari 3 kali\n");
puts("0.Keluar\n");
puts("Pilihan : ");scanf("%d",&pil);
system("cls");
switch(pil)
{
case 1:
//printf("Masukkan data : ");scanf("%s",&val);
add(&q,&l);
getch();
break;
case 2:
tampil(q);
getch();
break;
case 3:
hapus(&q,&l);
getch();
break;
case 4:
printf("Masukkan Nomor Pesanan : ");scanf("%d",&number);
cari(q,number);
getch();
break;
case 5:
printf("Total Pendapatan Apotik Adalah : %f",totalpendapatan(q));
getch();
break;
case 6:
cariobatterbanyak(l);
getch();
break;
case 7:
printf("Masukkan Nomor Pesanan : ");scanf("%d",&number);
edit(&q,&l,number);
getch();
break;
case 8:
pesan3kali(l);
getch();
break;
case 0:
printf("Bye");
break;
default:
printf("Nomor yang anda masukkan salah");
getch();
break;
}
}while(pil!=0);
}
Saturday, July 7, 2007
SD: Unguided Queue 6 Juli 2007
Download
/*karena format HTML, maka semua karakter lebih besar (>) dan lebih kecil (<) diganti dengan karakter ((>)) dan ((<)) sorry (^-^)*/
#include (<)stdio.h(>)
#include (<)stdlib.h(>)
#include (<)conio.h(>)
#include (<)string.h(>)
#define maxel 10
typedef char str[20];
typedef struct{
int nopesanan;
char namaobat[15];
int jumlahobat;
float hargaobat;
float totalobat;
}medi;
typedef struct{
medi elmn[maxel];
int head;
int tail;
}obat;
void init(obat *a);
void add(obat *a);
void tampil(obat a);
void hapus(obat *a);
void cari(obat a, int numb);
float totalharga(obat a);
void input(obat *a,int x);
void show(obat a, int i);
void copi(obat a,obat *o,int i);
int isempty(obat a);
int isfull(obat a);
int isoneelmn(obat a);
int isnook(obat a, int idx);
void init(obat *a)
{
(*a).head=(*a).tail=-1;
}
float totalharga(obat a)
{
return (a.elmn[a.tail].hargaobat * a.elmn[a.tail].jumlahobat);
}
void input(obat *a,int x)
{
do
{
printf("Masukkan no pesanan : ");scanf("%d",&(*a).elmn[(*a).tail].nopesanan);
if(!isnook((*a),x))
printf("\nMaaf No Pesanan yang dimasukkan harus lebih besar daripada yang sebelumnya (%d)\n",x);
}while(!isnook((*a),x));
printf("Masukkan nama obat : ");scanf("%s",&(*a).elmn[(*a).tail].namaobat);
do
{
printf("Masukkan jumlah obat : ");scanf("%d",&(*a).elmn[(*a).tail].jumlahobat);
if((*a).elmn[(*a).tail].jumlahobat(<)5)
printf("\nMaaf, Jumlah yang harus dibeli harus (>)= 5\n");
}while((*a).elmn[(*a).tail].jumlahobat(<)5);
printf("Masukkan harga obat : ");scanf("%f",&(*a).elmn[(*a).tail].hargaobat);
(*a).elmn[(*a).tail].totalobat=totalharga((*a));
printf("total biaya obat : %f",(*a).elmn[(*a).tail].totalobat);
}
void show(obat a, int i)
{
printf("\n\nDaftar ke %d",i+1);
printf("\nno pesanan : %d",a.elmn[i].nopesanan);
printf("\nnama obat : %s",a.elmn[i].namaobat);
printf("\njumlah obat : %d",a.elmn[i].jumlahobat);
printf("\nharga obat : %f",a.elmn[i].hargaobat);
a.elmn[i].totalobat=a.elmn[i].jumlahobat*a.elmn[i].hargaobat;
printf("\ntotal biaya obat : %f",a.elmn[i].totalobat);
}
void add(obat *a)
{
int x;
if(isfull((*a)))
printf("Antrian Penuh");
else
{
if(isempty((*a)))
{
x=0;
(*a).head=(*a).tail=0;
input(&(*a),x);
}
else
{
if((*a).tail==maxel-1)
{
x=(*a).elmn[(*a).tail].nopesanan;
(*a).tail=0;
}
else
{
x=(*a).elmn[(*a).tail].nopesanan;
(*a).tail++;
}
input(&(*a),x);
}
}
}
void tampil(obat a)
{
int i;
if(a.head<=a.tail)
{
for(i=a.head;i<=a.tail;i++)
show(a,i);
}
else
{
for(i=a.head;i(<)maxel;i++)
show(a,i);
for(i=0;i<=a.tail;i++)
show(a,i);
}
}
void copi(obat a,obat *o,int i)
{
(*o).elmn[i].nopesanan=a.elmn[i].nopesanan;
strcpy((*o).elmn[i].namaobat,a.elmn[i].namaobat);
(*o).elmn[i].jumlahobat=a.elmn[i].jumlahobat;
(*o).elmn[i].hargaobat=a.elmn[i].hargaobat;
(*o).elmn[i].nopesanan=a.elmn[i].nopesanan;
}
void hapus(obat *a)
{
obat o;
int j;
j=(*a).head;
copi((*a),&o,(*a).head);
if(!isempty(*a))
{
if(isoneelmn((*a)))
init(&(*a));
else
{
if((*a).head==maxel-1)
(*a).head=0;
else
(*a).head++;
}
show(o,j);
}
else
printf("Antrian Kosong");
}
void cari(obat a, int numb)
{
int i,temp=-1;
if(a.head(<)=a.tail)
{
for(i=a.head;i<=a.tail;i++)
{
if(numb==a.elmn[i].nopesanan)
temp=i;
}
}
else
{
for(i=a.head;i(<)maxel;i++)
{
if(numb==a.elmn[i].nopesanan)
temp=i;
}
for(i=0;i<=a.tail;i++)
{
if(numb==a.elmn[i].nopesanan)
temp=i;
}
}
if(temp==-1)
printf("Tidak ditemukan");
else
show(a,temp);
}
int isempty(obat a)
{
return(a.head==-1&&a.tail==-1);
}
int isfull(obat a)
{
return((a.head(<)a.tail && a.tail-a.head==maxel-1) || (a.head(>)a.tail && a.head-a.tail==1));
}
int isoneelmn(obat a)
{
return(a.head==a.tail && a.head!=-1);
}
int isnook(obat a, int idx)
{
return(a.elmn[a.tail].nopesanan(>)idx);
}
void main()
{
obat q;
int pil,number;
init(&q);
do
{
system("cls");
printf("head = %d , tail = %d\n",q.head,q.tail);
puts("\nMENU\n");
puts("1.Pesan Obat\n");
puts("2.Tampilkan Daftar obat\n");
puts("3.Hapus Pesanan\n");
puts("4.Cari Dengan no Pesanan\n");
puts("0.Keluar\n");
puts("Pilihan : ");scanf("%d",&pil);
switch(pil)
{
case 1:
//printf("Masukkan data : ");scanf("%s",&val);
add(&q);
getch();
break;
case 2:
tampil(q);
getch();
break;
case 3:
hapus(&q);
getch();
break;
case 4:
printf("Masukkan Nomor Pesanan : ");scanf("%d",&number);
cari(q,number);
getch();
break;
case 0:
printf("Bye");
break;
default:
printf("Nomor yang anda masukkan salah");
getch();
break;
}
}while(pil!=0);
}
/*karena format HTML, maka semua karakter lebih besar (>) dan lebih kecil (<) diganti dengan karakter ((>)) dan ((<)) sorry (^-^)*/
#include (<)stdio.h(>)
#include (<)stdlib.h(>)
#include (<)conio.h(>)
#include (<)string.h(>)
#define maxel 10
typedef char str[20];
typedef struct{
int nopesanan;
char namaobat[15];
int jumlahobat;
float hargaobat;
float totalobat;
}medi;
typedef struct{
medi elmn[maxel];
int head;
int tail;
}obat;
void init(obat *a);
void add(obat *a);
void tampil(obat a);
void hapus(obat *a);
void cari(obat a, int numb);
float totalharga(obat a);
void input(obat *a,int x);
void show(obat a, int i);
void copi(obat a,obat *o,int i);
int isempty(obat a);
int isfull(obat a);
int isoneelmn(obat a);
int isnook(obat a, int idx);
void init(obat *a)
{
(*a).head=(*a).tail=-1;
}
float totalharga(obat a)
{
return (a.elmn[a.tail].hargaobat * a.elmn[a.tail].jumlahobat);
}
void input(obat *a,int x)
{
do
{
printf("Masukkan no pesanan : ");scanf("%d",&(*a).elmn[(*a).tail].nopesanan);
if(!isnook((*a),x))
printf("\nMaaf No Pesanan yang dimasukkan harus lebih besar daripada yang sebelumnya (%d)\n",x);
}while(!isnook((*a),x));
printf("Masukkan nama obat : ");scanf("%s",&(*a).elmn[(*a).tail].namaobat);
do
{
printf("Masukkan jumlah obat : ");scanf("%d",&(*a).elmn[(*a).tail].jumlahobat);
if((*a).elmn[(*a).tail].jumlahobat(<)5)
printf("\nMaaf, Jumlah yang harus dibeli harus (>)= 5\n");
}while((*a).elmn[(*a).tail].jumlahobat(<)5);
printf("Masukkan harga obat : ");scanf("%f",&(*a).elmn[(*a).tail].hargaobat);
(*a).elmn[(*a).tail].totalobat=totalharga((*a));
printf("total biaya obat : %f",(*a).elmn[(*a).tail].totalobat);
}
void show(obat a, int i)
{
printf("\n\nDaftar ke %d",i+1);
printf("\nno pesanan : %d",a.elmn[i].nopesanan);
printf("\nnama obat : %s",a.elmn[i].namaobat);
printf("\njumlah obat : %d",a.elmn[i].jumlahobat);
printf("\nharga obat : %f",a.elmn[i].hargaobat);
a.elmn[i].totalobat=a.elmn[i].jumlahobat*a.elmn[i].hargaobat;
printf("\ntotal biaya obat : %f",a.elmn[i].totalobat);
}
void add(obat *a)
{
int x;
if(isfull((*a)))
printf("Antrian Penuh");
else
{
if(isempty((*a)))
{
x=0;
(*a).head=(*a).tail=0;
input(&(*a),x);
}
else
{
if((*a).tail==maxel-1)
{
x=(*a).elmn[(*a).tail].nopesanan;
(*a).tail=0;
}
else
{
x=(*a).elmn[(*a).tail].nopesanan;
(*a).tail++;
}
input(&(*a),x);
}
}
}
void tampil(obat a)
{
int i;
if(a.head<=a.tail)
{
for(i=a.head;i<=a.tail;i++)
show(a,i);
}
else
{
for(i=a.head;i(<)maxel;i++)
show(a,i);
for(i=0;i<=a.tail;i++)
show(a,i);
}
}
void copi(obat a,obat *o,int i)
{
(*o).elmn[i].nopesanan=a.elmn[i].nopesanan;
strcpy((*o).elmn[i].namaobat,a.elmn[i].namaobat);
(*o).elmn[i].jumlahobat=a.elmn[i].jumlahobat;
(*o).elmn[i].hargaobat=a.elmn[i].hargaobat;
(*o).elmn[i].nopesanan=a.elmn[i].nopesanan;
}
void hapus(obat *a)
{
obat o;
int j;
j=(*a).head;
copi((*a),&o,(*a).head);
if(!isempty(*a))
{
if(isoneelmn((*a)))
init(&(*a));
else
{
if((*a).head==maxel-1)
(*a).head=0;
else
(*a).head++;
}
show(o,j);
}
else
printf("Antrian Kosong");
}
void cari(obat a, int numb)
{
int i,temp=-1;
if(a.head(<)=a.tail)
{
for(i=a.head;i<=a.tail;i++)
{
if(numb==a.elmn[i].nopesanan)
temp=i;
}
}
else
{
for(i=a.head;i(<)maxel;i++)
{
if(numb==a.elmn[i].nopesanan)
temp=i;
}
for(i=0;i<=a.tail;i++)
{
if(numb==a.elmn[i].nopesanan)
temp=i;
}
}
if(temp==-1)
printf("Tidak ditemukan");
else
show(a,temp);
}
int isempty(obat a)
{
return(a.head==-1&&a.tail==-1);
}
int isfull(obat a)
{
return((a.head(<)a.tail && a.tail-a.head==maxel-1) || (a.head(>)a.tail && a.head-a.tail==1));
}
int isoneelmn(obat a)
{
return(a.head==a.tail && a.head!=-1);
}
int isnook(obat a, int idx)
{
return(a.elmn[a.tail].nopesanan(>)idx);
}
void main()
{
obat q;
int pil,number;
init(&q);
do
{
system("cls");
printf("head = %d , tail = %d\n",q.head,q.tail);
puts("\nMENU\n");
puts("1.Pesan Obat\n");
puts("2.Tampilkan Daftar obat\n");
puts("3.Hapus Pesanan\n");
puts("4.Cari Dengan no Pesanan\n");
puts("0.Keluar\n");
puts("Pilihan : ");scanf("%d",&pil);
switch(pil)
{
case 1:
//printf("Masukkan data : ");scanf("%s",&val);
add(&q);
getch();
break;
case 2:
tampil(q);
getch();
break;
case 3:
hapus(&q);
getch();
break;
case 4:
printf("Masukkan Nomor Pesanan : ");scanf("%d",&number);
cari(q,number);
getch();
break;
case 0:
printf("Bye");
break;
default:
printf("Nomor yang anda masukkan salah");
getch();
break;
}
}while(pil!=0);
}
Thursday, July 5, 2007
SD: Guided Queue 6 Juli 2007
//File header.h
#include (<)stdio.h(>)
#include (<)stdlib.h(>)
#include (<)conio.h(>)
#define maxel 5
typedef int address;
typedef char infotype;
typedef struct{
infotype T[maxel];
address head;
address tail;
}queue;
void createempty(queue *q);
int isempty(queue q);
int isfull(queue q);
int isoneelmn(queue q);
void add(queue *q, infotype val);
void del(queue *q);
void printqueue(queue q);
//File definition.c
#include "antrian.h"
void createempty(queue *q)
{
(*q).head=(*q).tail=-1;
}
int isempty(queue q)
{
return(q.head==-1&&q.tail==-1);
}
int isfull(queue q)
{
return((q.head(<)q.tail && q.tail-q.head==maxel-1) || (q.head(>)q.tail && q.head-q.tail==1));
}
int isoneelmn(queue q)
{
return(q.head==q.tail && q.head!=-1);
}
void add(queue *q, infotype val)
{
if(!isfull((*q)))
{
if(isempty((*q)))
{
(*q).head=(*q).tail=0;
(*q).T[(*q).head]=val;
}
else
{
if((*q).tail==maxel-1)
(*q).tail=0;
else
(*q).tail++;
(*q).T[(*q).tail]=val;
}
}
else
printf("Antrian Penuh");
}
void del(queue *q)
{
infotype temp=(*q).T[(*q).head];
if(!isempty(*q))
{
if(isoneelmn((*q)))
createempty(&(*q));
else
{
if((*q).head==maxel-1)
(*q).head=0;
else
(*q).head++;
}
printf("Elemen yang dihapus: %c",temp);
}
else
printf("Antrian Kosong");
}
void printqueue(queue q)
{
address i;
if(q.head<=q.tail)
{
for(i=q.head;i<=q.tail;i++)
printf("%c",q.T[i]);
}
else
{
for(i=q.head;i(<)maxel;i++)
printf("%c",q.T[i]);
for(i=0;i<=q.tail;i++)
printf("%c",q.T[i]);
}
}
//File main.c
#include "antrian.h"
void main()
{
queue q;
char val;
int pil;
createempty(&q);
do
{
system("cls");
printf("head = %d , tail = %d\n",q.head,q.tail);
puts("\nMENU\n");
puts("1.Add Queue\n");
puts("2.Del Queue\n");
puts("3.Print All Queue\n");
puts("0.Keluar\n");
puts("Pilihan : ");scanf("%d",&pil);
switch(pil)
{
case 1:
//printf("Masukkan data : ");scanf("%s",&val);
printf("Masukkan data : ");scanf(" %c",&val);
add(&q,val);
getch();
break;
case 2:
del(&q);
getch();
break;
case 3:
printf("Isi dari antrian : ");
printqueue(q);
getch();
break;
case 0:
printf("Bye");
break;
default:
printf("Nomor yang anda masukkan salah");
getch();
break;
}
}while(pil!=0);
}
#include (<)stdio.h(>)
#include (<)stdlib.h(>)
#include (<)conio.h(>)
#define maxel 5
typedef int address;
typedef char infotype;
typedef struct{
infotype T[maxel];
address head;
address tail;
}queue;
void createempty(queue *q);
int isempty(queue q);
int isfull(queue q);
int isoneelmn(queue q);
void add(queue *q, infotype val);
void del(queue *q);
void printqueue(queue q);
//File definition.c
#include "antrian.h"
void createempty(queue *q)
{
(*q).head=(*q).tail=-1;
}
int isempty(queue q)
{
return(q.head==-1&&q.tail==-1);
}
int isfull(queue q)
{
return((q.head(<)q.tail && q.tail-q.head==maxel-1) || (q.head(>)q.tail && q.head-q.tail==1));
}
int isoneelmn(queue q)
{
return(q.head==q.tail && q.head!=-1);
}
void add(queue *q, infotype val)
{
if(!isfull((*q)))
{
if(isempty((*q)))
{
(*q).head=(*q).tail=0;
(*q).T[(*q).head]=val;
}
else
{
if((*q).tail==maxel-1)
(*q).tail=0;
else
(*q).tail++;
(*q).T[(*q).tail]=val;
}
}
else
printf("Antrian Penuh");
}
void del(queue *q)
{
infotype temp=(*q).T[(*q).head];
if(!isempty(*q))
{
if(isoneelmn((*q)))
createempty(&(*q));
else
{
if((*q).head==maxel-1)
(*q).head=0;
else
(*q).head++;
}
printf("Elemen yang dihapus: %c",temp);
}
else
printf("Antrian Kosong");
}
void printqueue(queue q)
{
address i;
if(q.head<=q.tail)
{
for(i=q.head;i<=q.tail;i++)
printf("%c",q.T[i]);
}
else
{
for(i=q.head;i(<)maxel;i++)
printf("%c",q.T[i]);
for(i=0;i<=q.tail;i++)
printf("%c",q.T[i]);
}
}
//File main.c
#include "antrian.h"
void main()
{
queue q;
char val;
int pil;
createempty(&q);
do
{
system("cls");
printf("head = %d , tail = %d\n",q.head,q.tail);
puts("\nMENU\n");
puts("1.Add Queue\n");
puts("2.Del Queue\n");
puts("3.Print All Queue\n");
puts("0.Keluar\n");
puts("Pilihan : ");scanf("%d",&pil);
switch(pil)
{
case 1:
//printf("Masukkan data : ");scanf("%s",&val);
printf("Masukkan data : ");scanf(" %c",&val);
add(&q,val);
getch();
break;
case 2:
del(&q);
getch();
break;
case 3:
printf("Isi dari antrian : ");
printqueue(q);
getch();
break;
case 0:
printf("Bye");
break;
default:
printf("Nomor yang anda masukkan salah");
getch();
break;
}
}while(pil!=0);
}
Subscribe to:
Comments (Atom)

