AccessTr.neT

Tam Versiyon: Döngüler ve dizinler konusunda yardım.
Şu anda arşiv modunu görüntülemektesiniz. Tam versiyonu görüntülemek için buraya tıklayınız.
Merhabalar ;

Elimizde 1-1-2-2-3-3-4-4-5-5-6-6-7-7-8-8 sayıları var.
yani 1' den 8' e kadar olan sayılar ve her birinden 2' şer adet.

1- Bu sayılardan üretilebilecek tüm 16 basamaklı sayılar bir dosyaya atılacak.

2- Bu dosyada yer alan 16 basamaklı sayılardan aynı rakam yan yana gelenler ( Ör : 1234567887654321 - 1234567788123456 1.sayıda 8 rakamları yan yana geliyor 2. sayıda 7 ve 8 rakamları yan yana geliyor ) ayıklanacak.

Bu ayıklama sonucunda kurala uyan kaç adet sayı üretebileceğimizi bulabileceğiz.

Bu işlem senin ne işine yarayacak demeyin. İşin içinde hem bir matematik formülü üretmek var hem de gerek dizinleri gerekse döngüleri kullanmaya güzel bir örnek olacak.

Ben yapmayı deniyorum. Ancak sayıları üretme aşamasında döngü mantığını oturtamadım.

Yardımı olacaklara şimdiden teşekkürler.
1-1-2-2-3-3-4-4 sayıları kullanılarak 8 haneli istenilen özellikteki sayıları üreten Vba kodu ektedir. Bunu kullanarak 16 hanelileri yapabilirsiniz.

Not : Çalışma ve sonuç üretme süresi uzun olacaktır...
Hocam öncelikle emeğinize sağlık. Teşekkür ederim.

Birkaç çözümleyemediğim yer var ;

Dim T1(4) As Integer
Dim S1 As String
For K1 = 1 To 4
For K2 = 1 To 4
For K3 = 1 To 4
For K4 = 1 To 4
For K5 = 1 To 4
For K6 = 1 To 4
For K7 = 1 To 4
For K8 = 1 To 4

S1 = Format(K1, "0") & Format(K2, "0") & Format(K3, "0") & Format(K4, "0")
S1 = S1 & Format(K5, "0") & Format(K6, "0") & Format(K7, "0") & Format(K8, "0")

For I = 1 To 7
If Mid(S1, I, 1) = Mid(S1, I + 1, 1) Then GoTo 100
Next I

'Buraya kadar olan bölümde bir sayı oluşturuldu ve bu sayının kurala uymayanları döngüye gönderildi.

****************************************************************
'Aşağıdaki üç döngüde tam olarak ne yapıldığını çözemedim.

For I = 1 To 4
T1(I) = 0
Next I

For I = 1 To 8
L1 = Mid(S1, I, 1)
T1(L1) = T1(L1) + 1
Next I

For I = 1 To 4
If T1(I) <> 2 Then GoTo 100
Next I
*****************************************************************
rs.AddNew
rs!SAYI = S1
rs.Update
100
Next K8
Next K7
Next K6
Next K5
Next K4
Next K3
Next K2
Next K1
MsgBox "Sayılarınız TABLO1 de oluşturulmuştur..."
End Sub
1-2-3 ve 4 sayılarından 2 şer adet olması lazım.Bu döngüler onu kontrol ediyor.

Yani 12131423 geçerli sayı değil. "1" 3 adet kullanılmış fakat "4" bir adet.Bu durumda buda geçerli sayı olmuyor...
Hocam emeğinize sağlık . Olayı çok güzel özetlediniz.

Şimdi sıra n kadar sayı için kurala uyan kaç sayı yazılabilir. Bunun için bir matematik formülü üretmekte. buda benim işim. Formulü bulunca buradan payaşırım.

Teşekkürler.


Not : Sizden çok iyi bir matematikçi olabilir Img-grin))