Translate


Breaking News

Tokoh wayang

games

Senin, 04 Juli 2011

Contoh Source Queue Untuk Antrian Loket (C,C++)

Program ini untuk mengecek antrian yang ada pada setiap loket, disini ada 2 loket untuk lebih jelasnya dapat dilihat pada source dibawah ini,hohoho...
file header.h

#include 
#include 
#include 
#include 
#define maxEl 15

typedef int address;
typedef char infotype;

typedef struct
{
    char nama[50];
    int jenisTiket;
    int studio;
    int noLoket;
}Loket;
typedef struct
{
    Loket L[maxEl];
    address Head;
    address Tail;
}Queue;

void CreateEmpty(Queue *Q);
int IsEmpty(Queue Q);
int IsFull(Queue Q);
int IsOneElmt(Queue Q);
void Add(Queue *Q,Loket L);
//void Del(Queue *Q);
void PrintQueue(Queue Q);
void cekSisaTiket(Queue Q);
int cekAntrian(Queue Q);

file source.c

#include "header.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.HeadQ.Tail && Q.Head-Q.Tail==1));
}

int IsOneElmt(Queue Q)
{
    return (Q.Head==Q.Tail && Q.Head!=-1);
}

void Add(Queue *Q,Loket L)
{
    if(!IsFull(*Q))
    {
        if(IsEmpty(*Q))
        {
            (*Q).Head=(*Q).Tail=0;
            strcpy((*Q).L[(*Q).Tail].nama,L.nama);
            (*Q).L[(*Q).Tail].jenisTiket=L.jenisTiket;
            (*Q).L[(*Q).Tail].noLoket=L.noLoket;
            (*Q).L[(*Q).Tail].studio=L.studio;
        }
        else
        {
            if((*Q).Tail==maxEl-1)
                (*Q).Tail=0;
            else
            
            (*Q).Tail++;
            strcpy((*Q).L[(*Q).Tail].nama,L.nama);
            (*Q).L[(*Q).Tail].jenisTiket=L.jenisTiket;
            (*Q).L[(*Q).Tail].noLoket=L.noLoket;
            (*Q).L[(*Q).Tail].studio=L.studio;;
        }
        
    }
}
/*void Del(Queue *Q)
{
    infotype temp=(*Q).T[(*Q).Head];
    if(!IsEmpty(*Q))
    {
        if(IsOneElmt(*Q))
            CreateEmpty(&(*Q));
        else
        {
            if((*Q).Head==maxEl-1)
                (*Q).Head=0;
            else
                (*Q).Head++;
        }
        printf("\nElemen yang dihapus : %c",temp);
    }
    else
        printf("\nAntrian Kosong\n");
}
*/

void PrintQueue(Queue Q)
{
    address i;
    if(Q.Head<=Q.Tail)
    {
        for (i=Q.Head;i<=Q.Tail;i++)
        {
            printf("\n Nama\t\t\t:%s",Q.L[i].nama);
            printf("\n Jenis tiket\t\t:%d",Q.L[i].jenisTiket);
            if(Q.L[i].jenisTiket==1)
            {
                printf("\n Jam tayang\t\t:10.00-13.00");
            }
            else if(Q.L[i].jenisTiket==2)
            {
                printf("\n Jam tayang\t\t:13.15-15.15");
            }
            else if(Q.L[i].jenisTiket==3)
            {
                printf("\n Jam tayang\t\t:15.30-18.30");
            }
            printf("\n Studio\t\t\t:%d",Q.L[i].studio);
        }
    }
    else
    {
        for(i=Q.Head;i<=maxEl-1;i++)
        {
            printf("\n Nama\t\t\t:%s",Q.L[i].nama);
            printf("\n Jenis tiket\t\t:%d",Q.L[i].jenisTiket);
            if(Q.L[i].jenisTiket==1)
            {
                printf("\n Jam tayang\t\t:10.00-13.00");
            }
            else if(Q.L[i].jenisTiket==2)
            {
                printf("\n Jam tayang\t\t:13.15-15.15");
            }
            else if(Q.L[i].jenisTiket==3)
            {
                printf("\n Jam tayang\t\t:15.30-18.30");
            }
            printf("\n Studio\t\t\t:%d",Q.L[i].studio);
        }
        for (i=0;i<=Q.Tail;i++)
        {
            printf("\n Nama\t\t\t:%s",Q.L[i].nama);
            printf("\n Jenis tiket\t\t:%d",Q.L[i].jenisTiket);
            if(Q.L[i].jenisTiket==1)
            {
                printf("\n Jam tayang\t\t:10.00-13.00");
            }
            else if(Q.L[i].jenisTiket==2)
            {
                printf("\n Jam tayang\t\t:13.15-15.15");
            }
            else if(Q.L[i].jenisTiket==3)
            {
                printf("\n Jam tayang\t\t:15.30-18.30");
            }
            printf("\n Studio\t\t\t:%d",Q.L[i].studio);
        }
    }
}

void cekSisaTiket(Queue Q)
{
    address i;
    int t1,t2,t3;
    t1=0;
    t2=0;
    t3=0;
    if(Q.Head<=Q.Tail)
    {
        for (i=Q.Head;i<=Q.Tail;i++)
        {
            if(Q.L[i].jenisTiket==1)
                t1++;
            else if(Q.L[i].jenisTiket==2)
                t2++;
            else if (Q.L[i].jenisTiket==3)
                t3++;

        }
    }
    else
    {
        for(i=Q.Head;i<=maxEl-1;i++)
        {
                if(Q.L[i].jenisTiket==1)
                t1++;
            else if(Q.L[i].jenisTiket==2)
                t2++;
            else if (Q.L[i].jenisTiket==3)
                t3++;
        }
        for (i=0;i<=Q.Tail;i++)
        {
                if(Q.L[i].jenisTiket==1)
                t1++;
            else if(Q.L[i].jenisTiket==2)
                t2++;
            else if (Q.L[i].jenisTiket==3)
                t3++;
        }
    }
    printf("Sisa tiket jenis 1 : %d\n",20-t1);
    printf("Sisa tiket jenis 2 : %d\n",20-t2);
    printf("Sisa tiket jenis 3 : %d\n",20-t3);
}

int cekAntrian(Queue Q)
{
    address i;
    int a1;
    a1=0;
    if(Q.Head<=Q.Tail)
    {
        for (i=Q.Head;i<=Q.Tail;i++)
        {
                a1++;
        }
    }
    else
    {
        for(i=Q.Head;i<=maxEl-1;i++)
        {
                a1++;
        }
        for (i=0;i<=Q.Tail;i++)
        {
                a1++;
        }
    }
    return a1++;

}

file main.c

#include "header.h"

void main()
{
    Queue Q,Q2;
    Loket L;
    int pil,a,b;
    strcpy(L.nama,"");
    L.jenisTiket=0;
    L.noLoket=0;
    L.studio=0;
    CreateEmpty(&Q);
    CreateEmpty(&Q2);
    do
    {
        system ("cls");
        puts("\nMenu\n");
        printf("1.Add Queue\n");
        printf("2.Sisa Tiket\n");
        printf("3.Lihat Antrian\n");
        printf("4.Print All\n");
        printf("0.Keluar\n");
        printf("Masukkan pilihan :\n");
        pil=getch();
        switch(pil)
        {
        case '1':
            printf("Masukkan nama :");
            scanf("%s",&L.nama);
            printf("Masukkan no Loket :");
            scanf("%d",&L.noLoket);
            printf("Masukkan jenis tiket :");
            scanf("%d",&L.jenisTiket);
            L.studio=L.noLoket;
            if(L.noLoket==1)
                Add(&Q,L);
            else
                Add(&Q2,L);
            getch();
            break;
        case '2' :
            printf("\n========Sisa tiket Loket 1=========\n");
            cekSisaTiket(Q);
            printf("\n========Sisa tiket Loket 2=========\n");
            cekSisaTiket(Q2);
            getch();
            break;
        case '3':
            a=cekAntrian(Q);
            b=cekAntrian(Q2);
            printf("\nJumlah Antrian Loket 1= %d,sisa antrian =%d\n",a,maxEl-a);
            printf("\nJumlah Antrian Loket 2= %d,sisa antrian =%d\n",b,maxEl-b);
            getch();
            break;
        case '4':
            printf("Isi dari Antrian :");
            printf("\nData Loket 1\n\n");
            PrintQueue(Q);
            printf("\nData Loket 2\n\n");
            PrintQueue(Q2);
            getch();
            break;
        }
    }while (pil!='0');
}
 
 

Tidak ada komentar:

Designed By Blogger Templates