String'den İkili Ağaç Oluşturmak

VBA Makrolar ile ilgili sormak istedikleriniz, yapmak istedikleriniz hakkında yardım alabileceğiniz bölümdür.

String'den İkili Ağaç Oluşturmak

İleti#1)  goougii » 13 Mar 2019 04:58

Selamlar,

facility layout (tesis planlaması) konusunda tez yapmaktayım. Çok fazla araştırsam da işime yarayacak kodları değerlendiremedim. Bu yüzden yardımınıza ihtiyacım var. Kavramsal bir algoritmik yapı mevcut olduğundan sizlere bilgi vermek zorundayım.

- d=dikey bölme, y=yatay bölme, sayılar=departmanları ifade etmektedir.
ikili ağacı oluşturalım;
- öncelikle elimizde bir postfiks gösterimi baz alan metnimiz: 123dd4y5d
- metinden soldan başlayarak; harf ve rakam sayısı eşitlendiği anda metni kesiyoruz. Yani bu durumda; sondan ilk karakter d (harf)=1, devamındaki karakter 5 (rakam/sayı)=1, 1=1 olduğundan kesme işlemini gerçekleştir: 123dd4y/5d
- bu işleme devam edersek. 123dd/4y, 1/23dd
- oluşturmak istediğimiz ikili ağaç ektedir.

Ağacı oluşturmak mühim değil aslında. Önemli olan yer metni yukarıda belirttiğim kurala göre kesmek. Soldan başlayarak; harf ve rakam sayısı birbirine eşit ise metni oradan kes.

yardımlarınızı bekliyorum, saygılarımla


IMG_0664.JPG
Bu iletideki ekleri görmek için gerekli yetkilere sahip değilsiniz.
Kullanıcı avatarı
goougii
 
Kayıt: 12 Mar 2019 01:35
Meslek: Öğrenci
Yaş: 25
İleti: 5
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Eskişehir/Tepebaşı

Cevap: String'den İkili Ağaç Oluşturmak

İleti#2)  goougii » 15 Mar 2019 13:36

Bir düzeltme yapmak istiyorum. Metni kesme işlemini soldan başlayarak değil sağdan başlayarak yapmamız gerekiyor.
Kullanıcı avatarı
goougii
 
Kayıt: 12 Mar 2019 01:35
Meslek: Öğrenci
Yaş: 25
İleti: 5
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Eskişehir/Tepebaşı

Cevap: String'den İkili Ağaç Oluşturmak

İleti#3)  Zeki Gürsoy » 15 Mar 2019 22:16

Başlığa ilk baktığımda veritabanı indexleme yöntemi binary tree sandım.

Konuyu tam anlamasam da, örnekte verilen "123dd4y5d" metninin aşağıdaki gibi ayrılması(kesilmesi) gerekiyor değil mi?

1 / 23dd / 4y / 5d
Kullanıcı avatarı
Zeki Gürsoy
Siteye Alışmış
 
Adı Soyadı:Zeki Gürsoy
Kayıt: 18 Eyl 2011 21:43
Konum: Sakarya
Meslek: Muhasebe
Yaş: 40
İleti: 116
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Sakarya/Hendek

Cevap: Cevap: String'den İkili Ağaç Oluşturmak

İleti#4)  goougii » 15 Mar 2019 22:36

Zeki Gürsoy yazdı:Başlığa ilk baktığımda veritabanı indexleme yöntemi binary tree sandım.

Konuyu tam anlamasam da, örnekte verilen "123dd4y5d" metninin aşağıdaki gibi ayrılması(kesilmesi) gerekiyor değil mi?

1 / 23dd / 4y / 5d


Zeki bey cevabınız için teşekkür ederim. Evet aynen bu şekilde olması gerekiyor. Bu şekilde ayrıldıktan sonra binary ağaç oluşturmalıyım fakat henüz bu ayrımı yapamıyorum.

Tabi bu yöntem, profesörüm istediği binary tree oluşturma şekli. Başka yöntemlere de açığım.
Kullanıcı avatarı
goougii
 
Kayıt: 12 Mar 2019 01:35
Meslek: Öğrenci
Yaş: 25
İleti: 5
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Eskişehir/Tepebaşı

REKLAM
Excel Logo XML Oluşturucu
Logo Object Designer ile Uyarlama

Cevap: String'den İkili Ağaç Oluşturmak

İleti#5)  Zeki Gürsoy » 15 Mar 2019 22:40

Peki, konu anlaşıldığına göre sonucu nasıl görmek istiyorsunuz? Yani her kesileni farklı Excel hücrelerine veya metnin kesim aralarına tire slash gibi sembol ekleyerek gibi mi?
Kullanıcı avatarı
Zeki Gürsoy
Siteye Alışmış
 
Adı Soyadı:Zeki Gürsoy
Kayıt: 18 Eyl 2011 21:43
Konum: Sakarya
Meslek: Muhasebe
Yaş: 40
İleti: 116
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Sakarya/Hendek

Cevap: String'den İkili Ağaç Oluşturmak

İleti#6)  goougii » 15 Mar 2019 23:07

Cevapları ayrı hücrelere yazmak istiyorum. Kolaylık sağlayacağını düşünüyorum ağacı oluştururken. Sonrasındaki görüntüsü ilk iletimde belirttiğim fotoğraftaki gibi olması gerekiyor.
Kullanıcı avatarı
goougii
 
Kayıt: 12 Mar 2019 01:35
Meslek: Öğrenci
Yaş: 25
İleti: 5
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Eskişehir/Tepebaşı

REKLAM
ETA - Excel Konsolide Raporlama
ETA Excel Personel Entegre Raporu

Cevap: String'den İkili Ağaç Oluşturmak

İleti#7)  veyselemre » 16 Mar 2019 13:04

Bölme işlemini aşağıdaki gibi yapabilirsiniz.
Kod: Tümünü seç
Sub test()
    [a:a].ClearContents
    st = "123dd4y5d"

    For i = Len(st) To 1 Step -1
        al = Mid(st, i, 1)

        hepsi = al & hepsi
        If IsNumeric(al) Then
            numerics = numerics & al
        Else
            alfa = alfa & al
        End If
        If Len(numerics) = Len(alfa) Then
            sat = sat + 1
            Cells(sat, 1) = hepsi
            say = say + Len(hepsi)
            hepsi = ""
            numerics = ""
            alfa = ""
        End If
    Next i
    If Len(st) > say Then Cells(sat + 1, 1) = Mid(st, 1, Len(st) - say)
End Sub
Kullanıcı avatarı
veyselemre
Siteye Alışmış
 
Kayıt: 28 Nis 2015 15:53
Meslek: SERBEST
Yaş: 104
İleti: 394
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Ankara / Çubuk

Cevap: Cevap: String'den İkili Ağaç Oluşturmak

İleti#8)  goougii » 16 Mar 2019 14:08

veyselemre yazdı:Bölme işlemini aşağıdaki gibi yapabilirsiniz.
Kod: Tümünü seç
Sub test()
    [a:a].ClearContents
    st = "123dd4y5d"

    For i = Len(st) To 1 Step -1
        al = Mid(st, i, 1)

        hepsi = al & hepsi
        If IsNumeric(al) Then
            numerics = numerics & al
        Else
            alfa = alfa & al
        End If
        If Len(numerics) = Len(alfa) Then
            sat = sat + 1
            Cells(sat, 1) = hepsi
            say = say + Len(hepsi)
            hepsi = ""
            numerics = ""
            alfa = ""
        End If
    Next i
    If Len(st) > say Then Cells(sat + 1, 1) = Mid(st, 1, Len(st) - say)
End Sub


Çok teşekkür ederim. Ağaç oluştururken çok işime yarayacak. [TESEKKÜR]
Kullanıcı avatarı
goougii
 
Kayıt: 12 Mar 2019 01:35
Meslek: Öğrenci
Yaş: 25
İleti: 5
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Eskişehir/Tepebaşı


Forum Genel Makro Soruları

Online Kullanıcılar

Bu forumu görüntüleyenler: Kayıtlı kullanıcı yok ve 1 misafir

Bumerang - Yazarkafe