Visual basic ile metinde en fazla geçen kelimeyi bulma

1 2
10/04/2020, 15:02

S4L0

Arkadaşlar visual basic ile girilen metindeki en çok geçen kelimeyi ve kaç kere geçtiğini bulup ekrana yazdıran bir konsol uygulamasını nasıl yapabilirim?
10/04/2020, 15:23

accessman

bence şöyle yapabilirsin
" " kriterine göre split ile diziye alıp
foreach ile diziyi tarayıp
kelimeleri dictionary nesnesine kelime kısmı key olacak sekilde
kelime,count şeklinde kaydedip
sonra bunları count kısmı azalan olacak şekilde sıralatıp
en büyük sayısı olanı bulabilirsin

veya buraya bakabilirsin wordcounter.net
10/04/2020, 16:33

S4L0

dediğinizin bi benzerini for döngüsü ile yapmaya çalıştım ama olmadı
Dim metin As String
Dim metin1() As String
Dim metin2() As String
Dim i As Integer
Dim k As Integer
Dim kackeregecti() As Integer 'kelimenin kaç kere geçtiği saklanır
Dim encokgecen() As String 'en çok geçen kelime saklanır
metin = "Jerry , çevresindekilerin çok sevdiği insanlardan biriydi . Keyfi her zaman yerindeydi . Her zaman söyleyecek olumlu bir şey bulurdu . Hatta bazen etrafındakileri çıldırtırdı bile . Bu adam , bu halde bile nasıl iyimser olabiliyor ? Birisi nasıl olduğunu sorsa ; ' Bomba gibiyim ' diye yanıt verirdi hep .. ' Bomba gibiyim . ' Jerry bir doğal motivasyoncuydu … Yanında çalışanlardan biri , o gün , kötü bir günündeyse , Jerry yanına koşar , duruma nasıl olumlu bakılacağını anlatırdı . Bu tarzı fena halde düşündürüyordu beni … Bir gün Jerry’ye gittim . Anlayamıyorum dedim .. Nasıl olur da , her zaman , her koşulda bu kadar olumlu bir insan olabiliyorsun … Nasıl başarıyorsun bunu ? Her sabah kalktığımda kendi kendime Jerry bugün iki seçimin var : Havan ya iyi olacak , ya kötü .. derim . Havamın iyi olmasını seçerim . Kötü bir şey olduğunda gene iki seçimim var : Kurban olmak , ya da ders almak . Ben başıma gelen kötü şeylerden ders almayı seçerim . Birisi bana bir şeyden şikayete geldiğinde , gene iki seçimim var .. Şikayetini kabul etmek ya da ona hayatın olumlu yanlarını göstermek . Ben hayatın olumlu yanlarını seçerim . Yok yahu , diye protesto ettim . Bu kadar kolay yani ? Evet .. Kolay dedi Jerry .. Hayat seçimlerden ibarettir . Her durumda bir seçim vardır . Sen her durumda nasıl davranacağını seçersin . Sen insanların senin tavrından nasıl etkileneceklerini seçersin . Sen havanın , tavrının iyi ya da kötü olmasını seçersin … Yani sen , hayatını nasıl yaşayacağını seçersin !.. Jerry’nin sözleri beni oldukça etkiledi . Onu , uzun yıllar görmedim . Ama , hayatımdaki talihsiz olaylara dövünmek yerine , seçim yapmayı tercih ettiğimde hep onu hatırladım . Yıllar sonra , Jerry’nin başına çok tatsız bir şey geldi . Soygun için gelen hırsızlar , paniğe kapılıp , Jerry’yi delikdeşik etmişler … Ameliyatı 18 saat sürmüş , haftalarca yoğun bakımda kalmış . Taburcu edildiğinde , kurşunların bazıları hala vücudundaymış . Ben onu , olaydan altı ay sonra gördüm . Nasılsın ? diye sorduğumda , Bomba gibiyim dedi Bomba gibi . Olay sırasında neler hissettin Jerry dedim. Yerde yatarken , iki seçimim var diye düşündüm .. Ya yaşamayı seçecektim , ya ölümü .. Ben yaşamayı seçtim . Korkmadın mı , şuurunu kaybetmedin mi !.. Ambülansla gelen sağlık görevlileri harika insanlardı . Bana hep İyileşeceksin merak etme dediler . Ama acil servisin koridorlarında sedyemi hızla sürerlerken , doktorların ve hemşirelerin yüzündeki ifadeyi görünce ilk defa korktum . Bu gözler bana ; Bana adam ölmüş diyordu. Bir şeyler yapmazsam , biraz sonra ölü bir adam olacaktım gerçekten .. Ne yaptın ? diye merakla sordum .. Kocaman bir hemşire yanıma yaklaştı ve bağırarak herhangi bir şeye alerjim olup olmadığını sordu .. Evet diye yanıt verdim .. Var .. Doktorlar ve hemşireler merakla sustular .. Derin bir nefes alarak kendimi toparladım ve bağırdım : Benim kurşunlara alerjim var !.. Doktorlar ve hemşireler gülmeye başladılar . Tekrar bağırdım .. Ben yaşamayı seçtim . Beni bir canlı gibi ameliyat edin . Otopsi yapar gibi değil .. Jerry , sadece doktorların büyük ustalıkları sayesinde değil , kendi olumlu tavrının büyük katkısı ile yaşadı . Yaşaması bana yine ders oldu . Her gün , hayatımızı dolu dolu yaşamayı seçme şansımız ve hakkımız olduğunu ondan öğrendim .. Ve her şeyin kendi seçimimize bağlı olduğunu .."
metin1 = Split(metin.ToUpper, " ") ' metinin boşluklara göre ayrılmış halini metin1 e aktarır
metin2 = Split(metin.ToUpper, " ")
For i = 0 To UBound(metin1)

For k = 0 To UBound(metin2)
If metin1(i) = metin2(k) Then
kackeregecti += 1
encokgecen(i) = metin1(i)



End If
Console.WriteLine(k)
Next

Next




biraz saçma ama böyle bir şey düşündüm

https://onedrive.live.com/edit.aspx?acti....START.NEW


buradan yardımcı olur musun
10/04/2020, 17:53

accessman

Kod:
Private Sub deneme(metin As String)
Dim dict As Object
Set dict = CreateObject("Scripting.Dictionary")

Dim metin As String
Dim strMetin() As String
Dim i As Integer

strMetin = Split(metin, " ")

For i = 0 To UBound(strMetin)
    If dict.Exists(strMetin(i)) Then
        dict(strMetin(i)) = dict(strMetin(i)) + 1
    Else
        dict.Add strMetin(i), 1
    End If
Next

Dim maxi As Integer
Dim strMaxi As String
Dim intMaxi As Integer
Dim say As Integer

maxi = 0
intMaxi = 0
say = 0

Dim key As Variant
For Each key In dict.Keys
   
    If (maxi < dict(key)) Then
        maxi = dict(key)
        strMaxi = key
        intMaxi = say
    End If
    say = say + 1

Next key

MsgBox dict.Keys()(intMaxi) & ";" & dict.Items()(intMaxi)

End Sub
10/04/2020, 20:05

S4L0

yanıtın için çok teşekkür ederim
Kod:Imports System

Module Program
Sub Main(args As String())
Dim metin As String
Dim metin1() As String

Dim eleman As Integer = 0
Dim i As Integer
Dim tekrarsayisi() As Integer = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
'tekrarsayısı isimli değişkendeki 0 lar metin1.Lenght komutundan gelen sayıya göre konulmuştur metinde 250 kelime vardır
metin = " Her sabah kalktığımda kendi kendime Jerry bugün iki seçimin var : Havan ya iyi olacak, ya kötü .. derim. Havamın iyi olmasını seçerim. Kötü bir şey olduğunda gene iki seçimim var : Kurban olmak , ya da ders almak. Ben başıma gelen kötü şeylerden ders almayı seçerim. Birisi bana bir şeyden şikayete geldiğinde , gene iki seçimim var .. Şikayetini kabul etmek ya da ona hayatın olumlu yanlarını göstermek. Ben hayatın olumlu yanlarını seçerim. Yok yahu, diye protesto ettim. Bu kadar kolay yani ? Evet.. Kolay dedi Jerry.. Hayat seçimlerden ibarettir . Her durumda bir seçim vardır . Sen her durumda nasıl davranacağını seçersin. Sen insanların senin tavrından nasıl etkileneceklerini seçersi. Sen havanın, tavrının iyi ya da kötü olmasını seçersin … Yani sen, hayatını nasıl yaşayacağını seçersin !.. Jerry’nin sözleri beni oldukça etkiledi. Onu, uzun yıllar görmedim. Ama, hayatımdaki talihsiz olaylara dövünmek yerine, seçim yapmayı tercih ettiğimde hep onu hatırladım. Yıllar sonra , Jerry’nin başına çok tatsız bir şey geldi . Soygun için gelen hırsızlar, paniğe kapılıp , Jerry’yi delikdeşik etmişler … Ameliyatı 18 saat sürmüş , haftalarca yoğun bakımda kalmış . Taburcu edildiğinde , kurşunların bazıları hala vücudundaymış . Ben onu , olaydan altı ay sonra gördüm . Nasılsın ? diye sorduğumda , Bomba gibiyim dedi Bomba gibi. Olay sırasında neler hissettin Jerry dedim. Yerde yatarken, iki seçimim var diye düşündüm.. Ya yaşamayı seçecektim, ya ölümü.. Ben yaşamayı seçtim. Korkmadın mı, şuurunu kaybetmedin mi !.. Ambülansla gelen sağlık görevlileri harika insanlardı. Bana hep İyileşeceksin merak etme dediler. "
metin1 = Split(metin.ToUpper, " ") ' metinin boşluklara göre ayrılmış halini metin1 e aktarır

For i = 0 To UBound(metin1)


For j = i To UBound(metin1)
If metin1(i) = metin1(j) Then
tekrarsayisi(i) = tekrarsayisi(i) + 1
End If

If (tekrarsayisi(i) > eleman) Then
eleman = i
End If

Next
Next

For i = 0 To UBound(metin1)
Dim min As Integer = i
For j = i + 1 To UBound(metin1)
If (tekrarsayisi(j) < tekrarsayisi(min)) Then
min = j
End If
Next

Dim temp As Integer = tekrarsayisi(i)

tekrarsayisi(i) = tekrarsayisi(min)
tekrarsayisi(min) = temp
Next


Console.WriteLine("En cok kullanılan kelime: " + metin1(eleman))
Console.WriteLine("Tekrar Sayisi: " + Convert.ToString(tekrarsayisi(UBound(metin1))))


End Sub
End Module



bende böyle bişey yaptım ama şu 0 lar olmasa daha iyi olurdu
10/04/2020, 20:08

accessman

benim eklediğim kod çalışmadı mı
1 2