Bu örnekte C# ile girilen bir cümle ya da metnin içindeki kelimeleri ayırma ve ayrılan bu kelimelerin cümle içinde kaç kere tekrarlandığını bulma işlemini gerçekleştireceğiz.
Örnekte metnin RichTextBox içerisine girilmesini isteyeceğiz.
Daha sonra programa ait algoritma aşağıdaki şekilde işleyecek.
Girilen cümlede virgül, noktalı virgül, nokta gibi karakterler yok edilecek.( Bu işlemi çoğaltabiliriz -, _ vb)
Kullanıcının girdiği bu metin öncelikli olarak kelimelere ayrılacak.
Daha sonra kelimeleri boşluk karakterine göre ayırarak dizi içerisine alacağız.
Bir sonraki adımda bir liste oluşturacağız ve dizi elemanlarını baştan sona doğru tarayarak liste içinde yoksa liste içine aktaracağız. Böylelikle tekrar edilen kelimeleri liste içine almayacağız.
Daha sonra liste içindeki tekil kelimeleri sırasıyla dizi içinde arayarak adet tespitini yapacağız.
Bu işlemler sonucu son olarak verilerimizi listBox içinde göstereceğiz. (Kelime – Adet)
Programımıza ait kodlar ve ekran çıktısı aşağıdadır:
Not: Bu işlem daha farklı algoritmalarla çözülebilir. Yorum kısmından kendi algoritmanızı yazarak farklı şekillerde çözümler üretebilirsiniz.
C# Kodları:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
private void button1_Click(object sender, EventArgs e) { listBox1.Items.Clear(); string cumle; string[] kelimeler; List<string> tekil = new List<string>(); cumle = richTextBox1.Text; cumle = cumle.ToLower(); cumle = cumle.Replace(",","").Replace(":","").Replace(".","").Replace(";",""); kelimeler = cumle.Split(' '); for(int i = 0; i < kelimeler.Length; i++) { if (tekil.Contains(kelimeler[i]) == false) { tekil.Add(kelimeler[i]); } } foreach(string k in tekil) { int sayac = 0; for(int i = 0; i < kelimeler.Length; i++) { if (kelimeler[i]==k) { sayac++; } } listBox1.Items.Add(k+">>>>> "+sayac+" adet"); } } |
Add Comment