Öncelikle Merhaba Arkadaşlar. Forumda yeniyim. Kuralları tam bilmiyorum. Konuyu yanlış yere açtıysam affola.
Arkadaşlar şimdi benim hocam, sınıfta yer değişikliği yapacak. Bu yer değişikliği için benden yardım istedi. Bir program yapcakmışım. Rastgele birilerini sıraya oturtacakmışım. Yani;
1/1 : Mert 1/2 (Mert'in yanına oturacak kişi) : Kazım
şimdi bir sıraya 2 kişi oturacağından 1/2 de bitiyor ve 2/1 den başlıyor tekrar.
Abime sordum o bana çoklu dizileri anlattı ama pek anlamadım.
for (int i = 0; i < 10; i++) { for (int j = 0; j < 2; j++) { listBox1.Items.Add(kisiler[i,j].ToString()); } }
rnd.next() yerine en üstte kişileri tutan bir dizi tanımla.rnd.next(0,kisidizisi.length) ile o diziden birini seç.dizi[i,j] = kisiler[secilen] şeklinde kaydedersin.daha sonra kişiler dizisinden bu elemanı silersen hallolur.başka yöntemler de var zaten dizinin genişliklerini kendimiz girdiğimizden esnek bir çözüm değil ama istenileni karşılar
Dağıt butonunun click olayıdır.
int elemanSayisi = listBox1.Items.Count; // listedeki kişi sayısı int siraSayisi = elemanSayisi / 2; // eleman sayısının yarısı kadar sıra olur. tek ise ondalık alınmaz. 11 kişi ise 5.5 olur. buçuk atılır 5 kalır
string[,] sinif = new string[siraSayisi, 2]; // sıra sayısı kadar ve her sırada 2 kişi olacak kadar bir iki boyutlu dizidir
Random rs = new Random(); int secim; // listeden rastgele seçilen kişinin index numarası int sira=0; // dağıtım yapılacak sıranın numarası int oturan; // dağıtım yapılan sıranın kaçıncı kişisi olduğu. 0 yada 1 olur. 0-> ilk kişi 1->ikinci kişi
for (int i = 0; i < elemanSayisi; i++) { sira = (int)Math.Floor(i / 2.0); // eleman sayısının yarısı dağıtım yapılacak sıranın numarasıdır. oturan = i % 2; // sıradaki kaçıncı kişi olduğunu bulur. 0 yada 1 olur.
secim = rs.Next(0, listBox1.Items.Count); // listeden rastgele birini seç sinif[sira, oturan] = listBox1.Items[secim].ToString(); // seçilen kişiyi diziye koy listBox1.Items.RemoveAt(secim); // seçilmiş kişiyi listeden kaldır }
// dağıtım bitti. aşağıda ekrana yazdırılıyor // sıra kadar dön. her sırada 2 kişi için dön label1.Text += "\n";
for (int i = 0; i <= sira; i++) { label1.Text += (i + 1) + ".SIRA: \n-----------\n"; for (int j = 0; j < 2; j++) { label1.Text += (j+1)+".kişi: "+sinif[i, j]+"\n"; } label1.Text += "\n"; }
yeni mesaja git
Yeni mesajları sizin için sürekli kontrol ediyoruz, bir mesaj yazılırsa otomatik yükleyeceğiz.Bir Daha Gösterme