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);
}
Etiketler: palindrom