Bir lokantada
her biri 4 kişilik 10 adet masa bulunmaktadır. N ≤ 50 kişinin müşteri olarak geldiğini ve N değerinin kullanıcıdan
alındığını varsayarak kişileri masalara yerleştiriniz.
a) N adet müşterinin ad+soyadlarını oluşturunuz.
b) Genelde 1 ile 4 kişi arasında random bir müşteri grubunun
geldiğini dikkate alınız. Ancak 5 grupta bir, 5-6 kişilik bir grubun gelebildiğini
ve iki masanın birleştirilmesi ile oturduklarını varsayınız. Müşterileri, her
bir grubu farklı masaya gelecek şekilde yerleştiren i) Algoritmayı, ii) Java programını
yazınız.
c) Her bir masadaki kişileri, masaların doluluk oranlarını ve kaçar
TL (random) ödeme yaptıklarını listeleyiniz.
Yer bulamayan müşterilerin
veya boş kalan masaların sayısını yazdırınız.Masaa.java
import java.util.Vector;
public class Masaa {
int kapasite;
Vector<String> masadaOturanlar = new Vector<String>();
public Masaa(int boyut)
{
kapasite = boyut;
}
public void kisiEkle(String kisi)
{
masadaOturanlar.addElement(kisi);
}
public float dolulukOrani()
{
return (float) masadaOturanlar.size() / kapasite;
}
public int oturanKisiSayisi()
{
return masadaOturanlar.size();
}
public void oturanlariListele()
{
System.out.println(masadaOturanlar);
}
}
Musteri.java
import java.util.Vector;
public class Musteri {
Vector<String> liste = new Vector<String>();
public Musteri(int kisiSayisi)
{
String[] adListesi = { "Albert", "Mehmet", "Emmanuel", "Felipe",
"Fernando", "Sabri", "Sasha", "Ersan", "Lebron", "Kobe",
"Lionel", "Karim", "Christiano", "Lassana", "Ricardo", "Alex",
"Ahmet", "Halil Burak", "Anıl", "Emre", "Ezgi", "Ayşe",
"Fatma", "Özge", "Buse", "Buket", "Ceren", "Fatoş", "Sibel" };
String[] soyadListesi = { "Riera", "Okur", "Eboue", "Melo", "Muslera",
"Sarıoğlu", "Vujacic", "İlyasova", "James", "Bryant", "Messi",
"Benzema", "Ronaldo", "Diarra", "Queresma", "De Sauza", "Öz",
"Çetinkaya", "Turan", "Ergül", "Yılmaz", "Can", "Yıldırım",
"Güler", "Çalışkan", "Bilir", "Çetin" };
for(int i=0;i<kisiSayisi;i++)
{
String isim;
isim = adListesi[(int) (Math.random() * adListesi.length)] + " ";
isim += soyadListesi[(int) (Math.random() * soyadListesi.length)];
liste.addElement(isim);
}
}
public int kalanKisi()
{
return liste.size();
}
public String kisiAl()
{
String gonderilecekKisi = liste.elementAt(0);
liste.removeElementAt(0);
return gonderilecekKisi;
}
public Boolean bosMu()
{
return liste.isEmpty();
}
}
Test.java
import java.util.Vector;
import javax.swing.JOptionPane;
public class Test {
public static void main(String args[])
{
int kisiSayisi;
int[] masaBirlestirme = new int[1];
do{
kisiSayisi = Integer.parseInt(JOptionPane.showInputDialog("Restorana gelen kişi sayısını giriniz [0-50]"));
}while(kisiSayisi < 0 || kisiSayisi > 50);
int[] masaKapasiteleri={4,4,4,4,4,4,4,4,4,4}; // masa kapasiteleri ayarlandı
Masaa[] masalar = new Masaa[masaKapasiteleri.length]; // 10 adet masa masalar dizisi şeklinde oluştu
for(int i=0;i<masaKapasiteleri.length;i++)
{
masalar[i] = new Masaa(masaKapasiteleri[i]); //her bir masanın kapasitesi belirtildi
}
Musteri musteriler = new Musteri(kisiSayisi);
MasalaraEkle(kisiSayisi, masalar, musteriler, masaBirlestirme);
Vector<Integer> bosMasalar = new Vector<Integer>();
for(int i=0;i<masalar.length;i++)
{
if(masalar[i].oturanKisiSayisi() == 0)
bosMasalar.addElement(i);
else
{
if(i==5 && masaBirlestirme[0] > 4)
{
System.out.println("6. ve 7. masalar birleştirildi");
System.out.println("Ortak Masa : " + masaBirlestirme[0] + " kişi" + masalar[i].dolulukOrani() + " %doluluk oranı");
System.out.println("Masanın hesabı : "+ (int)(Math.random() * 300));
masalar[i].oturanlariListele();
masalar[i+1].oturanlariListele();
i++; // masa birleştiği için for u bir kez daha donduruyoruz.
}
else
{
System.out.println(" "+(i+1) +".Masa : " + masalar[i].oturanKisiSayisi()+ " kişi" + masalar[i].dolulukOrani() + " %doluluk oranı");
System.out.println("Masanın hesabı : "+ (int)(Math.random() * 100));
masalar[i].oturanlariListele();
}
}
}
System.out.println("\nKullanılan Masa sayisi :"+(masalar.length-bosMasalar.size()));
System.out.println("Boş Masa Sayısı: "+bosMasalar.size());
}
private static void MasalaraEkle(int kisiSayisi, Masaa[] masalar,Musteri musteriler, int[] masaBirlestirme) {
int kapasite = 40; // restoran kapasitesi
int gelenGrupKacKisi; // Kac kişilik müşteri grubunun geleceğini tuttuğum değişken.
for(int k=0;k<10;k++)
{
if(kisiSayisi <= 0 && kapasite == 0)
break;
if(k==5) // yani 6.grup ise
{
gelenGrupKacKisi = (int) (Math.random() * 6);
if(kisiSayisi < gelenGrupKacKisi+1) // Ayakta kalan müşteri sayısı random gelen gruptan küçükse
{
for(int j=0;j<kisiSayisi;j++)
masalar[k].kisiEkle(musteriler.kisiAl());
kapasite -= kisiSayisi;
kisiSayisi = 0;
break;
}
kisiSayisi -= gelenGrupKacKisi;
if(gelenGrupKacKisi+1 > 4) // gelen grup 4 kişiden fazlaysa
{
for(int j=0;j<4;j++)
masalar[k].kisiEkle(musteriler.kisiAl());
for(int m=0;m<gelenGrupKacKisi+1;m++)
masalar[k].kisiEkle(musteriler.kisiAl());
kapasite -= 8;
masaBirlestirme[0] = gelenGrupKacKisi+1;
}
else
for(int j=0;j<gelenGrupKacKisi+1;j++)
masalar[k].kisiEkle(musteriler.kisiAl());
continue;
}
gelenGrupKacKisi = (int) (Math.random() * 4); // 6.grup( dort kisiden daha kalabalık olan grup) değilse
if(kisiSayisi < gelenGrupKacKisi+1)
{
for(int j=0;j<kisiSayisi;j++)
masalar[k].kisiEkle(musteriler.kisiAl());
kapasite -= kisiSayisi;
kisiSayisi = 0;
break;
}
kisiSayisi -= gelenGrupKacKisi+1;
kapasite -= 4;
for(int j=0;j<gelenGrupKacKisi+1;j++)
masalar[k].kisiEkle(musteriler.kisiAl());
}
System.out.println("\n\nAyakta kalan müşteri sayısı:"+kisiSayisi);
System.out.print("\n\n");
}
}
Hiç yorum yok:
Yorum Gönder