Arama butonu
Bu konudaki kullanıcılar: 1 misafir
6
Cevap
1016
Tıklama
0
Öne Çıkarma
Array içinde farklı randomlar atmak//Soru güncel//
J
9 yıl (1076 mesaj)
Yüzbaşı
Konu Sahibi

örneğin şu şekilde bir seri oluşturdum
char[] harfler=new char[5];

sonra random olarak 5 harfi bu diziye yerleştirmem lazım

for (int i = 0; i < harfler.Length; i++)
harfler=(char)rnd.Next(65,91);

Ancak harfler farklı olmalı,Bunu nasıl yapabilirim?

örneğin [A C Z F C] olamaz

DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.

Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.

Üye Ol Şimdi Değil





< Bu mesaj bu kişi tarafından değiştirildi jahrekimla -- 24 Kasım 2016; 23:16:47 >


Bu mesajda bahsedilenler: @Microsoft Specialist
V
9 yıl (14315 mesaj)
Binbaşı

random oluşturup bir değişkene ata, sonra harfler'de var mı diye bak, yoksa ekle, varsa i'yi bir azalt ki aynı sayıdan for döngüsüne tekrar girsin

döngü(i=0,i < harfler'in uzunluğu,i++)
{
rnd = yeni random
harfler dizisi rnd'yi içeriyor mu?
evet: i'yi 1 azalt
hayır: rnd'yi harfler'e ekle
}



B
9 yıl (3379 mesaj)
Binbaşı

İçinde karakterler olan bir liste oluştur sonra eklediğin karakterleri listeden çıkar.



D
9 yıl (513 mesaj)
Yüzbaşı

İkilemeleri belirleyen bir fonksiyon oluşturabilirsin. Veya LINQ kullanabilirsin ? Distinct() fonksiyonu ile her karakter yalnızca 1 kez bulunur, ikilemeleri yok edersin.

 

int[] dizi = { 1, 2, 3, 3, 4};
int[] fix = dizi.Distinct().ToArray();
//OUTPUT: 1,2,3,4 olacaktır




J
9 yıl (1076 mesaj)
Yüzbaşı
Konu Sahibi

@Microsoft Specialist harfler dizisi rnd'yi içeriyor mu? Bu şekille hallettim ancak kolay olmadı,Teşekkürler.
@bersgurs Yardımınız için teşekkürler ancak liste oluşturmayı görmedik ve görmediğimiz şeyleri kullanmadan yapmamızı istiyorlar.
@Dentrax Aynı şekilde böyle bir yapıda görmedik,yardımınız için teşekkürler.

Şimdiki sorunum biraz daha enteresan;
Örnekte olduğu gibi gelen harfi diziden çıkartmam lazım.Bunu hallettim ancak bende |P U Z harfleri varken P harfini çıkartınca | U Z oluyor,oysaki |U Z olmalı yani çıkartılan harfin yeri boşluk oluyor oysaki default olup hiç yer kaplamaması lazım.
şimdiye kadar denediklerim
1-char c = '\0';
2-char d = "\0".ToCharArray()[0];
3-char e = char.MinValue;
4-char f = Convert.ToChar(0);
5-diziyi nullable char olarak tanımladım
char?[] test = new char?[3] {a,b,c};
test[2] = null;
Ancak hiçbiri olmadı

< Resime gitmek için tıklayın >


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @bersgurs , @Dentrax , @Microsoft Specialist
B
9 yıl (3379 mesaj)
Binbaşı

Char array den eleman silerken geçiçi bir dizi oluştur öncekinin boyut olarak 1 küçüğü olması gerek sonra elemanları teker teker kopyalarsın silmek istediğini kontrol ederek.

Liste yapısını array kullanarak oluşturabilirsin( Sınıf oluşturmayı öğrenmiş olmanız gerekir bunun için) yoksa her harfi tek tek kontrol edeceksin var mı diye.





< Bu mesaj bu kişi tarafından değiştirildi bersgurs -- 24 Kasım 2016; 19:21:43 >


Bu mesajda bahsedilenler: @jahrekimla
J
9 yıl (1076 mesaj)
Yüzbaşı
Konu Sahibi

@bersgurs hocam mesela 27 karakterlik 2dizi var.Geçici dizi 26karakter olsun dediniz.
Ben 27karakterden birini silince diğer diziyi nasıl kullanıcamki işime yarasın?Sonuçta 27lik diznin bir karakterini silmek sıkıntı.Aslında silinmiş olmuyor " " şeklinde boşluk oluyor yani yine 27 karakter var.26lık diziye sıymaaz.Bir yerleri yanlış mı anladım acaba?



Buna ek olarak nedense şu kod hata verir oldu


for (int i = 0; i < harfler.Length; i++) {          // Rastgele 27harfi(26harf+gülücük) farklı şekilde bul. 
int randomletter=rnd.Next(65,92);
for (int j = 0; j <harfler.Length ; j++)
{
if(harfler[j]==(char)randomletter)
i--;

else
harfler[i]=(char)randomletter;
}
}


Bir torbadan 27 harf çekilecek ancak çekilen harf geri konmuyacak.Proplem aşağı yukarı bu.
Neden çalışmadığını anlamadım Dizin,dizi sınırlarının dışındaydı diye hata veriyor

Edit sorunu hallettim;
for (int i = 0; i < harfler.Length; i++)
{
int randomletter = rnd.Next(65, 92);
for (int j = 0; j <=i; j++)
{
if (harfler[j] == (char)randomletter)
{
i--;
flag = false;
break;
}
}
if(flag)
harfler[i] = (char)randomletter;


}





< Bu mesaj bu kişi tarafından değiştirildi jahrekimla -- 24 Kasım 2016; 23:34:50 >


Bu mesajda bahsedilenler: @bersgurs
DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.