logo
Hoşgeldiniz! Forumun bütün özelliklerini kullanmak için lütfen Giriş ya da Kayıt.

Bildirim

Icon
Error

Dynamic nested loops in C#: Dinamik içice döngüler…
@butun Offline
#1 Gönderildi : 27 Ağustos 2010 Cuma 21:58:48(UTC)
@butun



Sıralama: Yönetici

Madalyalar:
Anahtar Kişi: Forumda anahtar rol oynayan kullanıcılara verilirAltın Madalya: Forumda üstün hizmetleri olan kullanıcılara verilirKod Erişimi: Forum kodlarına doğrudan erişimi bulunan kullanıcılara verilirVeritabanı Erişimi: Forum veri tabanına doğrudan erişimi olan kullanıcılara verilirSistemin Efendisi: Sisteminin tamamına hükmeden kullanıcılara verilir

Mesajlar: 1,852
Puanlar: 12,672
Konum: Istanbul

Thanks: 23 times
17 Mesajına Toplam 26 Kere Teşekkür Edildi.


Kod:

private void DynamicNestedLoop(int number, int index)
{
// get the current digit
// sayıdan index ile belirtilmiş basamağı al
int currentdigit = GetDigitAtIndex(number, index);

// if the current digit is 9 than we have to reset the number
// eğer şu anki basamak 9 ise sayıyı sıfırlamamız gerekiyor
if (currentdigit < 9)
{
// get the new number. for instance if the current number 1000
// and index = 3 than new number will be 1001
// yeni sayıyı al, örneğin şu anki sayımız 100 ise
// üretilecek yeni sayımız 1001 olacaktır
int newnumber = ChangeDigitAtIndex(number, index, currentdigit + 1);

Console.WriteLine(newnumber);

// call the method again with the current index
// metodu mevcut index ile yeniden çağır
DynamicNestedLoop(newnumber, index);
}
else
{
// if the current index greater than 0
// (it means if we are not dealing with the first digit)
// eğer şu anki indeximiz 0'dan büyükse
// yeni sayının ilk basamağı ile uğraşmıyorsak
if (index > 0)
{
// get the previous digit of the number
// because we will increase it
// sayının bir önceki basamağını al
// önceki basamağı arttıracağız çünkü
int prevdigit = GetDigitAtIndex(number, index - 1);

// if the previous digit is less than 9
// eğer bir önceki basamağımız 9'dan küçükse
if (prevdigit < 9)
{
// increase the previous digit
// bir önceki basamağı arttır
int newnumber = ChangeDigitAtIndex(number, index - 1, prevdigit + 1);

int numberlength = number.ToString().Length;

// reset the number to its minimum value
// set every digit to zero beginning from the previous index
// sayıyı bir önceki basamaktan başlayarak sıfırla
// diğer basamakları sıfırla
for (int i = numberlength - 1; i > index - 1; i--)
newnumber = ChangeDigitAtIndex(newnumber, i, 0);

Console.WriteLine(newnumber);

// call method again from the beginning
// metodu en başından yeniden çağır
DynamicNestedLoop(newnumber, numberlength - 1);
}
else
{
// if previous digit is 9 than look for other digits
// eğer bir önceki basamak 9 ise diğer basamakları kontol et
DynamicNestedLoop(number, index - 1);
}
}
}
}


 


Sınıfın detaylı kullanımı için aşağıdaki linki takip ediniz lütfen.

 

Linkleri görebilmek için lütfen siteye üye olunuz!

 

Bu konudaki kullanıcılar
Ziyaretçi
Forumu Atla  
Bu foruma yeni konular postalayamazsınız.
Bu forumda ki konulara yeni posta gönderemezsiniz.
Bu forumdaki postalarınızı silemezsiniz.
Bu forumdaki postalarınızı düzenleyemezsiniz.
Bu forumda anketler yaratamazsınız.
Bu forumdaki anketlere oy veremezsiniz.