#include #include #define BOS 0 #define ERKEK 1 #define BAYAN 2 #define CIFT 3 #define TEKERKEK 4 #define TEKBAYAN 5 struct Sefer{ int id; int yer[4][10]; int yolcuSayisi; }; void seferBaslat(struct Sefer *sefer) { int i,j; sefer->id=0; sefer->yolcuSayisi=0; for(i=0;i<4;i++) for(j=0;j<10;j++) sefer->yer[i][j]=BOS; } void liste(struct Sefer *sefer) { int i,j,s=1; sefer->yolcuSayisi=0; for(i=0;i<4;i++) for(j=0;j<10;j++) { if(sefer->yer[i][j]==ERKEK) { printf("\n%d Nolu Koltukta bir ERKEK oturuyor",s); sefer->yolcuSayisi++; } else if(sefer->yer[i][j]==BAYAN) { printf("\n%d Nolu Koltukta bir BAYAN oturuyor",s); sefer->yolcuSayisi++; } else if((sefer->yer[i][j]==CIFT) && (sefer->yer[i][j+1]==CIFT)) { printf("\n%d ve %d Nolu Koltuklarda bir CIFT oturuyor",s,s+1); sefer->yolcuSayisi+=2; if(j<10) j++; s++; } s++; } printf("\nSefer de Toplam %d yolcu vardir",sefer->yolcuSayisi); } int yolcuEkle(struct Sefer *sefer,const int tip) { int i,j,s=1; for(i=0;i<4;i++) for(j=0;j<10;j++) { if(tip==CIFT) if((sefer->yer[i][j]==BOS) && (sefer->yer[i][j+1]==BOS)) { sefer->yer[i][j]=CIFT; sefer->yer[i][j+1]=CIFT; return s; } if(tip==BAYAN) if((sefer->yer[i][j]==TEKBAYAN) || (sefer->yer[i][j]==BOS)) { sefer->yer[i][j]=BAYAN; if(sefer->yer[i][j+1]==BOS && !((s+1)%2)) sefer->yer[i][j+1]=TEKBAYAN; return s; } if(tip==ERKEK) if((sefer->yer[i][j]==TEKERKEK) || (sefer->yer[i][j]==BOS)) { sefer->yer[i][j]=ERKEK; if(sefer->yer[i][j+1]==BOS && !((s+1)%2)) sefer->yer[i][j+1]=TEKERKEK; return s; } s++; } return 0; } int main(int argc, char *argv[]) { struct Sefer sefer; seferBaslat(&sefer); int islem=0; int tip; sefer.id=10; do { printf("\n \tYeni Rezervesyon (1) Cikis (0) )"); scanf("%d",&islem); if(islem==1) { printf("\nYolcu Tipini Seciniz Cift(3) Tek Bayan(2) Tek Erkek(1)"); scanf("%d",&tip); int durum=yolcuEkle(&sefer,tip); if(durum) liste(&sefer); else printf("\n Uzgunuz yolcu tipine uygun bir yer bulunamadi"); } } while(islem); system("PAUSE"); return 0; }