Palindrom: Özyinelemeli çözüm

Yazar : zafer 15. Ocak 2009 21:07

Palindrom; baştan ve sondan okunduğunda değeri değişmeyen sayılardır. Bunların yazılı biçimlerine ise; "Dönüşük Sözcükler" denir.
Dönüşüklük aslında bir tür görsel bakışıklık (simetri) anlamına geliyor. Sözlü dilde dönüşüklüğü sezmek kolay değil. Japon yazısında olduğu gibi, heceleri imlerle anlatan, ya da Arap yazısında olduğu gibi, aynı harfi sözcüğün başında, ortasında ve sonunda başka başka imlerle gösteren, sesli harf gibi kimi harfleri kullanmayan dillerde dönüşüklüğü keşfetmek daha zor, belki de olanaksız. Latin abecesini kullanan dillerde ise bu özelliği görmek görece daha kolay, onun için de taa Romalılar'dan beri bu diller dönüşük sözcükleri bulmuşlar, böylece tümceler kurmuşlar.Örnekler : NASTAS MUM SATSANA, EY EDİP ADANADA PİDE YE, KABAK, KÜÇÜK, EFE, ANISINA, TALAT,ADA, ÜMMÜ, İKİ 

Merhaba, Bu yazımda yukarıda açıklamasınada yer verdiğim palindrom kelimeleri bulan ve bu işlem için özyineleme tekniğini kullanarak geliştirmiş olduğum programın örnek kodlarını inceleceğiz.

Palindrom kelime arama işini isPalindrom() isimli fonksiyon üstlenmekte, bu fonksiyon özyinelemeli olarak tasarlandı. Fonksiyon üç durumu inceleyip buna göre sonuç döndürüyor. Öncelikle kelimede kalan harf sayısı ikiden küçük ise bu kelimemizdeki tüm harflarin taranmış olduğunu gösteriyor ve fonksiyon 1 ile sonlanıyor. Eğer daha test edeceğimiz harf varsa bir sonraki if yapısında, sondaki ve baştaki harflerin eşitliği kıyaslanıyor. Eşit olmadıkları durumda ki bu zaten palindrom durumunun bozulması anlamına geliyor, fonksiyon 0 ile sonlanıyor. Eğer harfler eşitse else kısmı devreye giriyor ve sonraki harfleri kontrol etmek için isPalindrom() fonksiyonunu tekrar çağırıyor. Kodlar aşağıda, ayrıca ekte Codeblocks için proje klasörüde var. Sorularınız olursa bana yazabilirsiniz. Bir sonraki yazıda buluşmak üzere sağlıcakla kalın efem :)

CodeBlocks Proje Dosyası : palindrom_project.rar (9,52 kb)

 

#include <stdio.h>
#include <stdlib.h>

#define SIZE 20

int isPalindrom(char *str, int length);

int main()
{
    char aString[SIZE];
    int result = 0;

    printf("Palindrom arastirmasi icin bir kelime girin : ");
    scanf("%s", aString);

    result = isPalindrom(aString, strlen(aString));

    if (result == 1)
        puts("Bu bir palindrom.");
    else
        puts("Bu bir palindrom degil.");

    return 0;
}

int isPalindrom(char *str, int length)
{
    if (length < 2)
        return 1;

    if (str[0] != str[length-1])
        return 0;
    else
        return isPalindrom(str+1, length-2);
}

Tags:

C Notları

Yorum ekle




  Country flag
biuquote
  • Yorum
  • Canlı önizleme
Loading


Zafer Günlükleri © 2008 - 2012 Zafer'in kişisel paylaşım sitesi.
BlogEngine.NET 2.0.0.36 | Tema : Mads Kristensen | Düzenleyen : Zafer Çelenk
Oturum Aç | APML ile filtrele

Anket

D dilini duydunuz mu?




Sonuçlar

Projeler

Galeri

Takvim

<<  Şubat 2012  >>
PaSaÇaPeCuCuPa
303112345
6789101112
13141516171819
20212223242526
2728291234
567891011

Yazıları takvimde göster

Satranç

I play chess at Chess.com!

Son Yorumlar

Comment RSS

Yasal Uyarı

Bu site görüşlerin paylaşıldığı kişisel bir blogdur. Site içeriğinden meydana gelebilecek sorunlardan site sahibi sorumlu değildir. Yorumlar site sahibi tarafından onaylandıktan sonra yayınlanacaktır.