(Havayolları rezervasyon Sistemi) Küçük bir havayolları şirketi, rezervasyon kayıtlarını tutmak için yeni bir bilgisayar almıştır. Patron, size yeni sistemi C‘ de programlamanızı söylemiştir. Havayolları bir uçağa sahiptir ve sizden bu uçağın bütün uçuşlarının rezervasyon kayıtlarını tutacak bir program istenmiştir.
Programınız aşağıdaki menüyü içermelidir. “Sigara içilen bölüm” için 1‟e basın. “Sigara içilmeyen bölüm” için 2‟ye basın.
Eğer kullanıcı 1‘e basarsa, programınız sigara içilen bölümden bir koltuğun rezervasyonunu yapmalıdır.(1-5. koltuklar.) Eğer kullanıcı 2‘ye basarsa sigara içilmeyen bölümün koltuklarından birinin rezervasyonu yapılmalıdır.(6-10. koltuklar). Daha sonra programınız, müĢterinin hangi bölümden ve kaç numaralı koltuğa rezervasyon yaptırdığını göstermelidir.
Programınızda tek belirteçli bir dizi kullanınız. Dizi elemanlarının ilk değerlerini, koltukların boş olduğunu göstermek için 0 yapınız. Bir koltuğun rezervasyonu yapıldığında ilgili dizi elemanını 1 yapınız.
Programınız kesinlikle aynı koltuğa iki rezervasyon yapmamalı. Eğer sigara içilen bölüm dolduysa müşterinin sigara içilmeyen bölümden rezervasyon yapmak isteyip istemediğini sormalı(tam tersi durum içinde aynı iĢlemi yapmalı) . Eğer cevap evet ise uygun rezervasyon yapılmalı. Eğer hayırsa ―"Diğer uçuş 3 saat sonra" yazmalı.
şimdi bu program için aşağıdaki gibi yazmaya başladım ama soruyu tam kavrayabilmiş değilim. Yardımcı olursanız sevinirim , nasıl devam etmeliyim ya da nasıl değiştirmeliyim kodu?
#include <stdio.h>
void sigaraliAlan(int dizi[]) { int i; printf("\n*-* Koltuklarin suan ki durumu (0 = Bos , 1 = Dolu) *-*\n\n"); for (i = 0; i <5; i++) { printf("%d. koltuk : %d\n", i+1, dizi); } printf("\n"); }
5 değil 10 elemanlı olmalı dizi. İlk 5 eleman sigara içilen koltuklar, sonraki 5 eleman ise sigara içilmeyen. Elemanlara ulaşmak için kullanacağın index koltuk numarası oluyor yani. koltuk[no] = 1; // ilgili koltuk dolu... gibi.
Aslında 11 eleman yapsan daha iyi çünkü koltuk numaraları 1 den başlıyor. 2 fonksiyon yazabilirsin. Birisi dizinin ilk yarısını, diğeri ikinci yarısını kontrol eder. boş yer varsa koltuk numarasını, yoksa 0 (boş yok) döndürür. Duruma göre ya rezervasyon yapacaksın, ya da yer yok diyeceksin olay bu.
arkadaşlar kodu biraz daha geliştirdim. Lütfen yardım ediniz. Neler ilave etmek ya da çıkarmak gerekir buraya?
#include <stdio.h>
int sigaraliAlan(int dizi[]) { int i; static int j = 1; printf("\nIstediginiz alanda sizin icin %d numarali koltuk ayrildi.\n", j); printf("\nSigara icilen alandaki koltuklarin su anki durumu (0 = Bos , 1 = Dolu)\n\n"); for (i = 0; i < 5; i++) { dizi[j - 1] = 1; printf("%d. koltuk : %d - ", i + 1, dizi[i]); } printf("\n\n"); j++; if (dizi[4] == 1) { printf("Sigara icilebilen alanda yer kalmamistir\n\n"); return 0; }
}
void sigarasizAlan(int dizi[]) { int i; static int k = 1; printf("\nIstediginiz alanda sizin icin %d numarali koltuk ayrildi.\n", k); printf("\nSigara icilmeyen alandaki koltuklarin su anki durumu (0 = Bos , 1 = Dolu)\n\n"); for (i = 5; i < 10; i++) { dizi[k + 4] = 1; printf("%d. koltuk : %d - ", i + 1, dizi[i]); } printf("\n\n"); k++; if (dizi[9] == 1) { printf("Sigara icilmeyen alanda yer kalmamistir\n\n"); } }
int main() { int secim, koltukDurumlari[10] = { 0 }, i; printf("\n\tSigara icilen bolum icin 1 (Yalnizca 5 kisilik) ,\n"); printf("\tSigara icilmeyen bolum icin 2 giriniz. (Yalnizca 5 kisilik)\n\n\n"); printf("Simdi seciminizi yapiniz : "); scanf("%d", &secim); switch (secim) { case 1: { int yeniSecim; for (i = 0; i < 10; i++) { sigaraliAlan(koltukDurumlari); x: printf("Simdi yeniden seciminizi yapiniz : "); scanf("%d", ¥iSecim); if (yeniSecim == 1) { continue; } else if (yeniSecim==2) { sigarasizAlan(koltukDurumlari); goto x; } } break; } default: { printf("Hatali secim yaptiniz!\n"); } } }