Tuesday, July 3, 2007

SD: Stack Unguided 3 Juli 2007

/*karena format HTML, maka semua karakter lebih besar (>) dan lebih kecil (<) diganti dengan karakter ((>)) dan ((<)) sorry (^-^)*/

//file header.h

#include (<)conio.h(>)
#include (<)stdio.h(>)
#include (<)stdlib.h(>)
#define max 10

typedef char str[20];
typedef struct{
str namacd;
float harga;
}cd;

typedef struct{
int top;
cd content[max];
}allcd;

void init(allcd *disk);
void pushcd(allcd *disk);
void popcd(allcd *disk);
void popallstack(allcd *disk);
int cekharga(allcd disk,float price);


//file definition.c

#include "header.h"

void init(allcd *disk)
{
(*disk).top=-1;
}

void pushcd(allcd *disk)
{
float price;
str name;

if((*disk).top(<)max-1)
{
(*disk).top++;
printf("\nMasukkan Nama CD : ");scanf("%s",&name);
strcpy((*disk).content[(*disk).top].namacd,name);
do
{
printf("Masukkan Harga CD : ");scanf("%f",&price);
if(cekharga((*disk),price))
(*disk).content[(*disk).top].harga = price;
else
printf("Maaf harga CD yang baru harus 5000 lebih mahal\ndibandingkan harga cd sebelumnya (%f)\n",(*disk).content[(*disk).top-1].harga);
}while(cekharga((*disk),price)==0);
}
else
printf("Maaf Rak Sudah Penuh");
}

void popcd(allcd *disk)
{
if((*disk).top(>)(-1))
{
printf("\nCD ke %d",(*disk).top+1);
printf("\nNama CD : %s",(*disk).content[(*disk).top].namacd);
printf("\nHarga CD : %f",(*disk).content[(*disk).top].harga);
(*disk).top--;
}
else
printf("\nMaaf, Rak Kosong");
}

void popallstack(allcd *disk)
{
int i;
if((*disk).top(>)-1)
{
for(i=0;i<=(*disk).top;i++)
{
printf("\nCD ke %d",i+1);
printf("\nNama CD : %s",(*disk).content[i].namacd);
printf("\nHarga CD : %f",(*disk).content[i].harga);
}
}
else
printf("Tidak Ada CD");
}

int cekharga(allcd disk, float price)
{
if(disk.top==0)
return 1;
else
{
if(price (>)= disk.content[disk.top-1].harga+5000)
return 1;
else
return 0;
}
}


//file main.c

#include "header.h"

void main()
{
char pil;
allcd disc;
init(&disc);
do
{
system("cls");
printf("MENU");
printf("\n1. Tambah CD");
printf("\n2. Keluarkan CD");
printf("\n3. Tampilkan Semua CD");
printf("\nesc untuk keluar\n");
pil=getch();
switch(pil)
{
case '1':
pushcd(&disc);
getch();
break;
case '2':
popcd(&disc);
getch();
break;
case '3':
popallstack(&disc);
getch();
break;
}
}while(pil != 27);
}

No comments: