Kayıt
22 Nisan 2007
Mesajlar
1.361
Beğeniler
0
Şehir
BeN SeNiN CaNıN İçİN ÖmRüMü BiR KiBRiTiN KaBıNDa T
Bir bankanin musterilerini urettigi numaraya gore kuyruga atan program. Iki cesit musteri var. Siradan ve oncelikli musteri diye programda uc oncelikli bir siradan musteriyi kuyruktan aliyo.

EKRAN CIKTISI
Kod:
/*
/-----------------------------------------------------------\
|****************** OSMAN KARABULUT ***************************|
|*** Bir banka için müsterilere sıra numarası üreten bir ***|
|** program yazınız. Bu programa göre öncelikli ve sıradan *|
|** müşterileri tutan iki kuyruk yapısı uygulayın. *********|
|** 3 öncelikli ve 1 sıradan müşteri işleme alınsın. *******|
|** Programda müşteri geldiğinde 1 seçeneği seçilsin ve ****|
|** gelen muşteri türü belirtilsin. 2. seçeneği ile banka **|
|** görevlisinin sıradaki müşteriyi çağırdığını düşünün ve *|
|** çağırılan müşterinin bekleme numarası ekrana yazılsın. *|
|** 3. seçenekte kuyrukların durumları rapor edilsin. ******|
|***********************************************************|
\-----------------------------------------------------------/
*/

#include <cstdlib>
#include <iostream>
#include <time.h>

using namespace std;

class Dugum
{
private:
    int bilgi;
public:
    Dugum *sonraki;
    Dugum(){bilgi = 0;}
    Dugum(int a){ bilgi = a;}
    int deger(){return bilgi;}
    ~Dugum(){}
};

class Kuyruk
{
    public:
        Dugum *bas;
        Dugum *son;
        Kuyruk(int a)
        {
            Dugum *tut = new Dugum(a);
            bas = tut;
            son = tut;

        }
        Kuyruk()
        {
            bas = 0;
            son = 0;
        }
        void push(int );
        int pop();
        void yazdir();
        bool bosMu();
    
};
bool Kuyruk::bosMu()
{
    if(bas == 0)
        return true;
    else
        return false;
}
void Kuyruk::push(int a)
{
    Dugum *tut = new Dugum(a);
    if( bas == 0 && son == 0 )
    {
        bas = tut;
        son = tut;
        son->sonraki = 0;
        cout<<"Kuyrugun Sonuna "<<a <<" eklendi.\n";    
    }    
    else
    {
        son->sonraki = tut;
        son = tut;
        tut->sonraki = 0;
        cout<<"Kuyrugun Sonuna "<<a <<" eklendi.else\n";
    }
}

int Kuyruk::pop()
{
    Dugum *tut = new Dugum(0);
    int a = bas->deger();
    if(bas->deger() == 0 && son->deger() == 0)
    {
        cout<<"Kuyruk Bos!Herhangi Bir Deger Cikaramazsiniz...\n";
    }
    else if(bas == son)
    {
        tut = bas;
        cout<<"Basdaki "<<tut->deger()<<" ilk sayi cikarildi...\n";
        delete bas;
        son = tut;
    }
    else
    {
        tut = bas;
        cout<<"Basdaki "<<tut->deger()<<" ilk sayi cikarildi...\n";
        tut = bas->sonraki;
        delete bas;
        bas = tut;
    }
    return a;
}

void Kuyruk::yazdir()
{
    Dugum *tut = new Dugum();
    if(bas->deger() == 0)
    {
        cout<<"Kuyruk Bos!Yazdirilacak Deger Bulunmamaktadir...\n";
    }
    else{
        for(tut = bas; tut != 0; tut = tut->sonraki)
          cout<<tut->deger()<<"  ";
          cout<<endl;
    }
}
int menu()
{
    int secim;
    printf("\n\t\t\t%c",201);
    for(int i = 0 ; i < 26 ; i++)
    printf("%c",205);
    printf("%c\n",187);
    printf("\t\t\t%c 1. Kuyruga Musteri Ekle  %c\n"
           "\t\t\t%c 2. Kuyruktan Mesteri Al  %c\n"
           "\t\t\t%c 3. Kuyrugu yazdir        %c\n"
           "\t\t\t%c 4. CIKIS                 %c\n"
           ,186,186,186,186,186,186,186,186);
    printf("\t\t\t%c",204);
    for(int i = 0 ; i < 26 ; i++)
    printf("%c",205);
    printf("%c\n",185);
    printf("\t\t\t%c       Seciminiz ?        %c \n"
           ,186,186);
    printf("\t\t\t%c",200);
    for(int i = 0 ; i < 26 ; i++)
    printf("%c",205);
    printf("%c\n\t\t\t",188);
    scanf_s("%d",&secim);
    return secim;
}
int menu2()
{
    int secim;
    printf("\n\t\t%c",201);
    for(int i = 0 ; i < 49 ; i++)
    printf("%c",205);
    printf("%c\n",187);
    printf("\t\t%c\tOncelikli Musteri Eklemek icin --> 1      %c\n"
           "\t\t%c\t Siradan  Musteri Eklemek icin --> 2      %c\n"
           ,186,186,186,186);
    printf("\t\t%c",204);
    for(int i = 0 ; i < 49 ; i++)
    printf("%c",205);
    printf("%c\n",185);
    printf("\t\t%c\t          Seciminiz ?                     %c \n"
           ,186,186);
    printf("\t\t%c",200);
    for(int i = 0 ; i < 49 ; i++)
    printf("%c",205);
    printf("%c\n\t\t",188);
    scanf_s("%d",&secim);
    return secim;    
}
int main()
{
    Kuyruk *oncelikli = new Kuyruk();
    Kuyruk *siradan = new Kuyruk();
    int secim , siraNo , secim1 , sayac = 0 , cikar;
    system("color 1e");
    srand(time(NULL));
    secim = menu();
    while(secim != 4)
    {
        system("cls");
        if(secim == 1)
        {
            secim1 = menu2();
            if(secim1 == 1)
            {
                siraNo = rand()%200+100;
                printf("\t\t");
                oncelikli->push(siraNo);
            }
            else if(secim1 == 2)
            {
                printf("\t\t");
                siraNo = rand()%500+300;
                siradan->push(siraNo);
            }
        }
        else if(secim == 2)
        {
            bool kontrol = siradan->bosMu();
            bool kontrol1 = oncelikli->bosMu();
            if(!(sayac % 4) && kontrol == false)
            {
                printf("\n\n\t\t");
                cikar = siradan -> pop();
                printf("\n\n\t\t");
                printf("%d Numarali Siradan Musteri Islem yapti\n",cikar);
                sayac++;
            }
            else if(kontrol1 == false)
            {
                printf("\n\n\t\t");
                cikar = oncelikli ->pop();
                printf("\n\n\t\t");
                printf("%d Numarali Oncelikli Musteri Islem yapti\n",cikar);
                sayac++;
            }
            else
                printf("\n\n\t\tKUYRUKTA MUSTERI YOK!!!\n");
        }
        else if(secim == 3)
        {    
            if(oncelikli->bosMu() != true)
            {
                printf("\n\n\t\t");
                printf("Oncelikli Musteriler \n");
                printf("\n\n\t\t");
                oncelikli->yazdir();
            }
            else
                printf("\n\n\t\t\tOncelikli Musteriler BOS \n");
            if(siradan->bosMu() != true)
            {
                printf("\t\t");
                printf("Siradan Musteriler \n");
                printf("\t\t");
                siradan->yazdir();
            }
            else
                printf("\t\t\tSiradan Musteriler BOS \n");
        }
        secim = menu();
    }
    printf("\t\t\t");    
    return 0;
}
 
Yukarı Alt