Yazar : zafer
18. Aralık 2008 21:27
Merhabalar, bir süredir yeni yazılar ekleyememiştim. Bayram tatili, tatil dönüşü derken zaman geçti gitti. Bir süredir Deitel'in kitabının üzerinden C çalışmalarıma devam ediyorum. Oldukça güzel alıştırma soruları var. Eğer C diline yeni başlamışsanız kitabı alıp incelemenizi veya bir şekilde bu sorulara ulaşıp gözden geçirmenizi salık veririm.
Bu sorulardan biriside bir havayolu şirketine ait bilet satış uygulaması geliştirmek. Şu an soruyu tam hatırlamıyorum ama kısaca uçak iki bölümden oluşuyor, sigara içilen ve içilmeyen bölüm, gelen yolcuya ilgili bölüm seçiminden sonra o bölümden bir koltuk veriliyor. Eğer o bölüm dolmuşsa yolcuya diğer bölümden bilet isteyip istemediği soruluyor ve cevap evet ise diğer bölümden boş bir koltuk veriliyor.
Proje kodları aşağıda ancak CodeBlocks ile çalışanlar için bir ekstra daha var. CodeBlocks proje dosyasınıda ekte yayınlıyorum. Bu sayade sadece CodeBlocks içinden project dosyasını açarak tüm projeye ulaşmış olucaksınız.
CodeBlocks Proje Dosyası : THY_Project.zip (12,08 kb)
#include <stdio.h>
#include <stdlib.h>
#define KOLTUK_SAYISI 10
int KoltukSat(int dizi[], int boyut, int sigara);
int BosKoltukVerSigaraVar(int dizi[], int boyut);
int BosKoltukVerSigaraYok(int dizi[], int boyut);
void DiziYazdir(int dizi[], int boyut);
int main()
{
int koltuklar[KOLTUK_SAYISI] = {0};
int sigaraSec, koltukNo;
while(sigaraSec != 0)
{
printf("THY Bilet Satis Bolumu!\n");
printf("Lutfen sigara opsiyonunu seciniz\n\n");
printf("1-Sigara icilen bolum\n");
printf("2-Sigara icilmeyen bolum\n");
printf("Seciminiz[1/2] : ");
scanf("%d", &sigaraSec);
system("CLS");
if((sigaraSec != 1) && (sigaraSec != 2)) continue;
koltukNo = KoltukSat(koltuklar, KOLTUK_SAYISI, sigaraSec);
if(koltukNo == -1)
printf("\n\nUzgunuz! Istediginiz seferde bos koltuk kalmadi.\n\n");
else
printf("\n\nRezervasyonunuz yapildi. Koltuk numaraniz %2d olarak belirlendi.\n\n", koltukNo);
system("PAUSE");
system("CLS");
}
DiziYazdir(koltuklar, KOLTUK_SAYISI);
return 0;
}
int BosKoltukVerSigaraYok(int dizi[], int boyut)
{
int i;
for(i=(KOLTUK_SAYISI / 2); i<boyut; i++)
{
if(dizi[i] == 0)
return i;
}
return -1;
}
int BosKoltukVerSigaraVar(int dizi[], int boyut)
{
int i;
for(i=0; i<boyut; i++)
{
if(dizi[i] == 0)
return i;
}
return -1;
}
int KoltukSat(int dizi[], int boyut, int sigara)
{
int bosKoltuk;
char baskaKoltukBak;
switch(sigara)
{
case 1:
bosKoltuk = BosKoltukVerSigaraVar(dizi, 5);
if(bosKoltuk == -1)
{
printf("\n\nSigara icilen bolum doldu. Diger bolume bakilsin mi? [E/H]..>");
scanf(" %c", &baskaKoltukBak);
if((baskaKoltukBak == 'e') || (baskaKoltukBak == 'E'))
bosKoltuk = BosKoltukVerSigaraYok(dizi, boyut);
}
if(bosKoltuk != -1) dizi[bosKoltuk] = 1; /* Koltuk satildi isaretle */
break;
case 2:
bosKoltuk = BosKoltukVerSigaraYok(dizi, boyut);
if(bosKoltuk == -1)
{
printf("\n\nSigara icilmeyen bolum doldu. Diger bolume bakilsin mi? [E/H]..>");
scanf(" %c", &baskaKoltukBak);
if((baskaKoltukBak == 'e') || (baskaKoltukBak == 'E'))
bosKoltuk = BosKoltukVerSigaraVar(dizi, 5);
}
if(bosKoltuk != -1) dizi[bosKoltuk] = 1; /* Koltuk satildi isaretle */
break;
default:
printf("Lutfen gecerli bir secim yapiniz!\n\n");
}
return bosKoltuk;
}
void DiziYazdir(int dizi[], int boyut)
{
int satir;
for(satir=0; satir<boyut; satir++)
{
printf("%2d", dizi[satir]);
}
}