[q]
(6) 

C# Diziler

blizzarddd #845847
Arkadaşlar merhaba,
C# ta bir dizim var mesela 10 elemanlı.

Elimde de yeni bir değer var. Atıyorum 7.

Yapmak istediğim şey şu.

Program 7'yi dizinin TÜM elemanları ile karşılaştıracak ve eğer TÜMÜNDE 7 yoksa bir işlem için döngünün içine girecek bunu nasıl yapabilirim?

for döngüsünün içine konulan if döngüsü burada sağlıklı çalışmıyor çünkü mesela ilk eleman 7 değilse döngünün içine giriyor.

 

for döngüsü içerisinde if kullanarak, eğer 7 bulunursa boolean bir değişkene true değeri atarsın ve break komutuyla döngüden çıkarsın. bulamazsa boolean değişkenin false olarak kalır.

for döngüsünden sonra başka bir if clause yazarsın, boolean değişken false ise if'in içinde asıl girmesi gereken döngüye yönlendirirsin.

bu arada ilk döngüde elindeki değerle dizi elemanlarını karşılaştırırken for yerine foreach de kullanabilirsin.

karışık geldiyse kodu yazmaya çalışayım.

novemba

7 var mı yok mu diye bir kontrol değişkeni tutabilirsiniz.
bool kontrol=false;
for()//dizinin tüm elemanlarını gezecek döngü
{
if()//dizi[i]==7,dizide bir tane bile 7 varsa girmeyecek değil mi?
{
kontrol=true; break;
}
}
bu döngünün dışına da
if(kontrol==false)
{
//diğer işlemin döngüsü
}

Bu şekilde olabilir. Sizin yoldan gidersek 7'yi kontrol ettiğiniz yere "dizinin son elemanı mı?" şeklinde bir şart da koyabilirsiniz gibi geldi.
---
for(int i=0;i<10;i++)
{
if(dizi[i]==7
break;
else
{
if(i==9)
//senin işlemler
}
}

nickini vermek istemeyen uye

notepad'de yazana kadar @nickini vermek istemeyen uye gayet açık yazmış zaten.

boşa gitmesin, benim foreach kullandığım kod şöyle:

int [] dizi = new int [] {0, 3, ... elemanlar };
int deger = 7;
bool kontrol;

foreach (int i in dizi)
{
if (deger == i)
{
kontrol = true;
break;
}
}

if (!kontrol)
{
//döngü
}

novemba

var isContain = list.Any(item => item.KontrolEdilecekProperty == 7);
if(!isContain)
{
yapılacak işlemler
}
Eğer diziniz List<int> gibiyse Any'nin içindeki kısım (item => item == 7) olur.

edit: Gerçi arrayler üzerinden değil de List üzerinden gittim, belki bu işinize yarar diye silmiyorum.

montreal

Böyle bir soru sorduğun için acemi olduğun belli oluyor gerçi ama ben yine de tavsiyemi yapayım.

Bu şekilde bir dizi kendi oluşturduğun bir diziyse ve uzunluğu da 10'u çok çok aşacaksa for döngüsü ile dizinin tüm elemanlarını dönmek verimsiz olur. Özellikle arama işini birden fazla kez yapacaksan Dictionary, Hashtable gibi yapılar daha verimli çalışma imkanı sunar.

Tüm diziyi dönersen karmaşıklık : N
Dictionary/Hashtable ile : 1

Veriye göre 2'ye 3'e çıkabilir ancak N'in büyük rakamlarında tüm diziyi dolaşmaya göre çok çok verimlidir.

iron

öehh maşallah hepinize çok zekisiniz cidden

oldboy
1

mobil görünümden çık