[]

C# Diziler

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  (09.10.14 00:18:40 ~ 00:20:04) 
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  (09.10.14 00:22:05 ~ 00:24:28) 
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  (09.10.14 00:27:06 ~ 00:27:52) 
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  (09.10.14 00:31:09 ~ 00:31:56) 
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  (09.10.14 01:03:20) 
öehh maşallah hepinize çok zekisiniz cidden


  • oldboy  (09.10.14 01:31:05) 
1
buraya yazılanların hakları Sir Anthony Hopkins'e aittir.
yazan eden compumaster, ilgilenen eden fader
modere edenler angelus, Artibir, aychovsky, baba jo, basond, compumaster, deckard, duyulmasi gerektigi kadar, fader, fraise, groove salad, kahvegibi, kaymaktutmayansicaksut, kibritsuyu, monstro, pandispanya, robin, ron dennis
bu sitede yazılanların hiçbiri doğru değildir. site içeriği küçükler için sakıncalı olabilir. yazılardan yazarları sorumludur. kaynak göstermeden alıntılanamaz. devlet tarafından atanmış bir kurumun internet üzerinde kimin hangi bilgiye ulaşıp ulaşamayacağına karar vermesi insan haklarına aykırıdır. web siteleri kullanıcıların istekleri doğrultusunda bağlandıkları yerlerdir. kullanıcılar isterlerse bir web sitesine bağlanmayabilirler. bu güçleri ve imkanları mevcuttur. bir kullanıcı bir siteye bağlanmak istiyorsa bu onun tercihi ve hakkıdır. bağlanmak istemiyorsa bu yine onun tercihi ve hakkıdır. halkın kendisine hizmet etmesi için görevlendirdiği kurumlar hadlerini aşıp halka neye ulaşıp ulaşmayacağını bilmeyen cahil cühela muamelesi edemezler. ebeveynlerin çocuklarını sakıncalı içeriklerden koruması için çok sayıda bedava ve ücretli yazılım mevcuttur. bu yazılımlar bir web tarayıcısını kullanmaktan daha karmaşık teknik bilgi gerektirmemektedir. devletin milletini küçük düşürmesi ve ebleh yerine koyması yasaktır. Skimlinks ile linkler üzerinden yönlendirme payı alınmaktadır.