Excel Forum
ALTIN ÜYELİK Hakkında Bilgi


Geri Git   Excel Forum > EXCEL-Soruları > Beyin Fırtınası
Atatürk
Şifremi Unuttum

DUYURU SİSTEMİ / REKLAM PANOSU

Beyin Fırtınası Bu başlıkta, ilginç olduğunu düşündüğünüz sorularınızı, bir problem şeklinde sorabilir, alternatif olduğunu düşündüğünüz çözümlerinizi paylaşabilirsiniz. (Bu başlıkta yeni konu açılması onaya bağlıdır.)
Dosya ekleyebilirsiniz

Özel Arama


Yanıtla
 
Paylaş Konu Araçları Görünüm Modları
Eski 17-04-2009, 12:21   #1
xxcell
 
Giriş: 25/04/2007
Mesaj: 460
Excel Vers. ve Dili:
2007
Varsayılan Tüm İhtimalleri Bulma

Herkese Selam,

İhtiyaç duyduğum bir konuda aşağıda anlatacağım husus hakkında bir kod geliştirmem gerekti ve birkaç değişik alternatif ile sorunumu çözdüm.

Sonra bu konunun Kod Geliştirme Açısından güzel bir konu olduğunu, Beyin Fırtınası açısından iyi bir örnek teşkil ettiği kanaatine nayil olup, tarafınıza yayınlamayı uygun buldum.

Soru şu'dur;

3 Haneli, 1 – 2 – A karakterlerinden oluşan bir Metinsel İfadenin alabileceği değerler.

1 1 1
1 1 2
1 1 A
1 2 1
1 2 2
1 2 A
1 A 1
1 A 2
1 A A
2 1 1
2 1 2
2 1 A
2 2 1
2 2 2
2 2 A
2 A 1
2 A 2
2 A A
A 1 1
A 1 2
A 1 A
A 2 1
A 2 2
A 2 A
A A 1
A A 2
A A A

Yukarıdaki gibi olup toplam 27 tanedir.

Örneğin toplam uzunluğu 6 Haneli, Herhangi Bir Harf Ya da Sayılardan oluşan bir Metinsel İfadenin Alabileceği Değerleri bulan Kod (yada fonksiyon) alternatifleri nelerdir?

Herkese iyi çalışmalar.
xxcell Çevrimdışı   Alıntı Yaparak Cevapla
Eski 18-04-2009, 13:25   #2
tufan03
 
Giriş: 12/05/2006
Mesaj: 456
Varsayılan

Mesela basit şifreleri çözmede kullanılabilir.
tufan03 Çevrimdışı   Alıntı Yaparak Cevapla
Eski 18-04-2009, 13:41   #3
xxcell
 
Giriş: 25/04/2007
Mesaj: 460
Excel Vers. ve Dili:
2007
Varsayılan

Tufan Bey,

Benim ihtiyaç duyduğum konu da bu olmuştu. Maalesef şifre kırma konusu sitede yasaklı konulardan. O yüzden ona yakın bir örnek ve çözüm önerisi veremiyeceğim. Ama yukarıdaki gibi bir sorunun bir sakıncası yok diye düşünüyorum arkadaşlar önerilerini verince bende çözüm alternatifimi söyleyeceğim.

Kendim, şifreli bir excel dosyasına girmek için; internetten Şifre Kırma Dosyası araştırırken, bu dosyalarda en büyük sorunun, güvenilir olmayan sitenelerde yayınlanması oldu. Sonra düşündüm, Neden kendi şifre kırma Kodu Mu yazmıyorum? diye

ve çok güzel bir kod yazdım. Maalesef site prensipleri açısından yayınlayamıyorum.
Ne yazıkkı Hırsızlık yasaklanırken maalesef Çilingirlik de yasaklanıyor doğal olarak.

Ama can alıcı kısmı Tüm İhtimaller Nasıl bulunur? bu konuda Beyin Cimnastiği yapmak istedim.
xxcell Çevrimdışı   Alıntı Yaparak Cevapla
Eski 18-04-2009, 14:35   #4
Levent Menteşoğlu
Administrator
 
Levent Menteşoğlu kullanıcısının avatarı
 
Giriş: 13/10/2004
Şehir: Çorlu
Mesaj: 15,896
Excel Vers. ve Dili:
Excel 2010-Türkçe
Varsayılan

Sn xxcell

İyi niyetli amaçlar için bir çalışma yaptığınızdan hiç şüphem yok. Ancak şifre kırma gibi konulara kurallarımız gereği izin vermiyoruz. Ancak yukarıdaki gibi temeli matematiğe dayanan başlıkları elbette açabilirsiniz.
__________________
FORUM KURALLARI



"Biz burada hep beraber, sevginin,saygının, alınterinin, mutluluğun makrosunu yazıyoruz. " Kaylan
Levent Menteşoğlu Çevrimdışı   Alıntı Yaparak Cevapla
Eski 19-04-2009, 12:40   #5
leumruk
Uzman
 
leumruk kullanıcısının avatarı
 
Giriş: 15/04/2007
Şehir: Mustafa ALTUN ANKARA
Mesaj: 3,163
Excel Vers. ve Dili:
Office 2010 & 2013 tr
Varsayılan

Selamlar,
6'lı döngü kullanarak bir çözüm ürettim.
Kod: (Rahat kopyalayabilmeniz için tüm kodu seçmenizi sağlar)
Sub dene()
Sat = 1
    For x = 1 To 6
        For y = 1 To 6
            For z = 1 To 6
                For q = 1 To 6
                    For w = 1 To 6
                        For r = 1 To 6
                        Cells(Sat, "h") = Cells(1, x) & Cells(1, y) & Cells(1, z) & Cells(1, q) & Cells(1, w) & Cells(1, r)
                        Sat = Sat + 1
                        Next
                    Next
                Next
            Next
        Next
    Next
End Sub
Hane sayısı arttığında, döngüyü sayıya göre artırmanız gerekir veya sayı azalıyorsa azaltmalısınız.
Eklenmiş Dosyalar
Dosya Türü: xls ÜçSayıKombinasyonu2.xls (28.0 KB, 312 Görüntülenme)
__________________
"Seni her türlü noksandan tenzih ederiz. Senin bize öğrettiğinden başka bizim hiçbir bilgimiz yoktur. Sen herşeyi hakkıyla bilir, her işi hikmetle yaparsın." (Bakara Sûresi: 2:32.)

"Onların duaları şu sözlerle sona erer: Ezelden ebede her türlü hamd ve övgü, şükür ve minnet, Âlemlerin Rabbi olan Allah'a mahsustur." (Yunus Suresi, 10:10.)

Bu mesaj en son " 19-04-2009 " tarihinde saat 12:51 itibariyle leumruk tarafından düzenlenmiştir....
leumruk Çevrimdışı   Alıntı Yaparak Cevapla
Eski 19-04-2009, 18:50   #6
xxcell
 
Giriş: 25/04/2007
Mesaj: 460
Excel Vers. ve Dili:
2007
Varsayılan

Matematik'te Basamak Kavramını kullanarak Tüm İhtimalleri Bulma

Onluk Sayı sisteminde Örn. 1.000 ile 1.500 arasındaki tüm sayıları bulmak için
sayıları birer arttırırız. Bu işlemin Algoritması şöyle ilerler

a) en son hane Olabilecek Maximum Karaktere gelinceye kadar bir arttır

1000
1001
1002
1003
1004
1005
1006
1007
1008
1009

Son hane olabilecek En yüksek ihtimale gediğinde, Ondan önceki karakteri bir arttır ve arttırdığın karakterden sonraki tüm karakterleri sıfır (0) yap

yani 1010 yap

ve döngüyü başa al. Yani son hane 9 oluncaya kadar döndür, ve yine son hane en yüksek ihtimale geldiğinde, ondan önceki karakteri bir arttır ve arttırdığın karakterden sonraki tüm karakteri minimum karakter yap ve döngüyü tekrar başa al.

bu şekilde

1099 sayısına ulaşınca, Son hane 9 olduğu için bir önceki hane'ye bakıyor ve o da olabilecek en yüksek değeri aldığı için ondan bir öncekine bakıyor ve eğer o en yüksek değer değilse o haneyi bir arttırıp ondan sonraki tüm haneleri sıfırlıyor ve yine son haneyi arttırma işlemini yapıyor.

Matematikte Onluk, Onaltılık, ikilik veya tüm sayı sistemlerinde arttırma bu şekilde yapılır.

Sayının alabileceği tüm ihttimaller Her hane (digit) için olabilecek ihtimallerin çarpınıa eşittir, yukarıda 4 dijit söz konusu ve 9 x 6 x 10 x 10 = 5.400 adet ihtimal var. (1 nci hane 1 ile 9 , 2 nci hane 0 ile 6 diğer haneler 0 ile 9 arası değerler alıyor)

Bende bu kavramı temel alarak Şifreyi bir arttır şeklinde bir döngü kurdum istenilen örneğe uyarlanmış ekteki öneği geliştirdim.

Benim örneğim A - Z arası harfleri, a - z arası harfleri, 0 - 9 arası sayılarını kapsıyor. Bu kapsamı belirten en kestirme yol, Ascıı kod sayfasındaki 48 ile 122 nci karakterler arasıdır. Asc(48) SIFIR karakteridir. Asc(122) küçük z harfidir.

Yani benim örneğim için her hane 75 değişik değer alabilir, 6 hane için
75 x 75 x 75 x 75 x 75 x 75 = 1,78E+11 adet ihtimal vardır.

Ben bu ihtmallere şifre kırmak için ulaşmıştım. Makinenin her ihtimali teker teker denerek şifre kırması bu yüzden biraz zaman alabilir.

Aşağıdaki fonksiyon; Minimum karakteri ve Maximum Karakteri bellirli bir şifreden sonra gelecek şifreyi üretir.

Kod: (Rahat kopyalayabilmeniz için tüm kodu seçmenizi sağlar)
Function SonrakiSifre(sifre As String, MinimumKarakter As Integer, MaximumKarakter As Integer)
Dim DerlenenDigit As Integer
DerlenenDigit = Len(sifre)

Do While DerlenenDigit > 0
If Asc(Mid(sifre, DerlenenDigit, 1)) >= MaximumKarakter Then DerlenenDigit = DerlenenDigit - 1 Else Exit Do
Loop

SifreUzunlugu = Len(sifre)

If DerlenenDigit > 0 Then
    sifre = Left(sifre, DerlenenDigit - 1) & Chr(Asc(Mid(sifre, DerlenenDigit)) + 1)
    Do While Len(sifre) < SifreUzunlugu
    sifre = sifre & Chr(MinimumKarakter)
    Loop
Else
    sifre = ""
    For n = 1 To SifreUzunlugu + 1
    sifre = sifre & Chr(MinimumKarakter)
    Next
End If

SonrakiSifre = sifre

End Function
Bu fonksiyon yardımıyla basit bir döngü kurarak olabilecek tüm ihtimaller excel sayfasına alalım, BEKLEMEKTEN SIKILDIĞINIZDA KODU DEBUG YAPINIZ

Kod: (Rahat kopyalayabilmeniz için tüm kodu seçmenizi sağlar)
Sub SifreBul()
Dim sifre As String

sifre = "000000"
satir = 1
sutun = 1

Do

sifre = SonrakiSifre(sifre, Asc("0"), Asc("z"))

Cells(satir, sutun) = sifre

satir = satir + 1
If satir = 65536 Then
satir = 1
sutun = sutun + 1
End If

Loop

End Sub
xxcell Çevrimdışı   Alıntı Yaparak Cevapla
Eski 19-04-2009, 18:59   #7
xxcell
 
Giriş: 25/04/2007
Mesaj: 460
Excel Vers. ve Dili:
2007
Varsayılan

Örnek Dosyası Ektedir
Eklenmiş Dosyalar
Dosya Türü: xls TümİhtimalleriBulanKod.xls (23.5 KB, 561 Görüntülenme)
xxcell Çevrimdışı   Alıntı Yaparak Cevapla
Eski 10-07-2009, 12:30   #8
sinankayan
 
Giriş: 10/07/2009
Şehir: istanbul
Mesaj: 1
Excel Vers. ve Dili:
office 2003 - türkçe
Varsayılan

SifreyiBul isimli makroyu çalıştırınız diyor nasıl gerçekleştireceğiz bunu
sinankayan Çevrimdışı   Alıntı Yaparak Cevapla
Eski 07-08-2009, 12:13   #9
sergions
 
sergions kullanıcısının avatarı
 
Giriş: 16/08/2004
Şehir: İstanbul
Mesaj: 132
Excel Vers. ve Dili:
Office 2010 En 64 Bit
Varsayılan

Araçlar > Makro > Makrolar'a gelin ve Açılan Penceredeki SifreBul yazısına çift tıklayın.
sergions Çevrimdışı   Alıntı Yaparak Cevapla
Eski 07-08-2009, 13:20   #10
baydeniro
 
Giriş: 26/01/2007
Mesaj: 3,351
Excel Vers. ve Dili:
Ofis 2016
Varsayılan

Çok teşekkürler. İlginç bir çalışma
baydeniro Çevrimdışı   Alıntı Yaparak Cevapla
Yanıtla


Konu Araçları
Görünüm Modları

Gönderme Kuralları
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Açık
SimgelerAçık
[IMG] kodu Açık
HTML kodu Kapalı


Saat 09:44


Bu forum Elit NET - www.elitnet.com.tr tarafından sunulmaktadır.

Excel Eğitimi - Mobil Uygulama - Çorlu - Çorlu Web Tasarım - Tarot Falı - invest in turkey - Lingerie - Dyeing Machine - Karton Bardak- Çorlu Özel Eğitim- Site Yönetimi- Led Aydınlatma- Pronet Tekirdağ- Çorlu Kamera- Pronet Edirne- Pronet Kırklareli- Pronet Çerkezköy- Pronet Çorlu- Pronet Lüleburgaz- Pronet Keşan- Çorlu Araç Takip- Çorlu Su Arıtma- Boru Profil- Gebze Emlak- Beylikdüzü Temizlik- İstanbul Burun Estetiği- Bakır Sülfat- Rampa- Rotary- Çorlu İnternet Sitesi- youngblood- Çorlu Palet- Çerkezköy Palet- Çorlu Prefabrik- Çorlu Sürücü Kursu- Çorlu Sandviç Panel- Şişli Avukat- Korona Test Kalemi- Çorlu Vinç- Çorlu Pimapen Tamiri- Çorlu Çelik Konstruksiyon-
Powered by vBulletin Version 3.7.2
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Advertisement System V2.6 By   Branden