duyuruElektroArge.com'a Hoşgeldiniz. Üye Olmak İçin Tıklayın. duyuru





houseForum ana sayfa   iletişimİletişim   bilgiSSS  
kırmızı yeşil mavi
ekleKayıt  anahtarGiriş
evForum ana sayfa goKod Paylaşımı & Tamamlanmış Projeler goC Dili Kod Paylaşımı ve Projeler
 

  • Reklam

Cümlede Palindrom Olup Olmadığını Bulma

C Dili ile Yazılmış Kodlar ve Tamamlanmış Projeler

Cümlede Palindrom Olup Olmadığını Bulma

Mesajgönderen okanbilke » 02 Mar 2014 04:17

Tersten okunuşu ile düzden okunuşu aynı olan kelime veya kelime gruplarına palindrom adı verilir. Örneğin radar ve madam kelimeleri palindrom'dur çünkü tersten okunuşları da yine radar ve madam'dır.
Sadece kelimeler değil cümleler de palindrom olabilir. Dilimizde çok ilginç palindrom örnekleri vardır:
İbrahim kek mi harbi?
Aç raporunu koy, okunur o parça
Al yarısını sırayla

Şimdi yazacağımız program ile, klavyeden girilen bir cümlenin palindrom olup olmadığını kontrol edeceğiz. Eğer cümle palindrom ise ekrana palindrom, değilse palindrom değil yazdıracağız.
//palindrom_test.c - 02.03.2014 - Okan BİLKE -www.elektroarge.com

#include <stdio.h>
#include <ctype.h>

int test_palindrom(char *);

int test_palindrom(char *str)
{
int uzunluk = strlen(str), i = 0;
char *bas, *son;

bas = str;
son = str + uzunluk - 1;

// baş göstericisi son göstericisini geçene kadar bak:
while(bas + i <= son)
{
// sadece ASCII 97 - 122 ve 65 - 90 aralığını
// (buyuk - kucuk harfler) alıyoruz:
while(tolower(*(bas + i)) < 97 || tolower(*(bas + i)) > 122)
bas++;
while(tolower(*(son - i)) < 97 || tolower(*(son - i)) > 122)
son--;

if(tolower(*(bas+i)) != tolower(*(son - i))) // palindrom degil
{
return 0;
}
i++;
}
return 1;
}

int main()
{
char str[200];

puts("Bir cumle giriniz (max 200 karakter):");
// cumleyi diziye yerlestir:
gets(str);

if(test_palindrom(str))
printf("palindrom!!");
else
printf("palindrom degil!");

return 0;
}
//bu dosya elektroarge.com'dan indirilmiştir.

Programın mantığı gerçekten çok basit: 17. satrdaki döngü ile cümlenin baştan ve sondan aynı sıradaki harflerini karşılaştırıyoruz(26. satır). Örneğin baştan 1. harf ile sondan 1. harf, baştan 2. harf ile sondan 2. harf gibi. Bu karşılaştırma işlemini, cümlenin yarısına gelene kadar yapıyoruz. Eğer bu karşılaştırma işlemleri sırasında, farklı karakterlere rastlarsak, cümlenin palindrom olmadığını anlayarak 28. satırda fonksiyondan çıkıyoruz. Eğer tüm karşılaştırma boyunca program akışı 28. satıra uğramamışsa, bu durumda cümle palindrom demektir, biz de 32. satırda geriye 1 değeri döndürerek bunu gösteriyoruz.
Programda sadece küçük ve büyük harfleri değerlendirdiğimize dikkat ediniz. 21. ve 23. satırlar, cümle içinde geçen noktalama işaretlerini ve harfler dışındaki diğer karakterleri dikkate almadan geçmek için kullanılmaktadır. Ayrıca 26. satırdaki tolower() fonksiyonu da küçük - büyük harf farklılığını ortadan kaldırmıştır.
Şimdi programımızı çalıştıralım:
Bir cumle giriniz (max 200 karakter):
ey internetçi, netçi, içten içten ret niye?
palindrom!!

Tekrar çalıştıralım:
Bir cumle giriniz (max 200 karakter):
en acilinden palindrom olmayan bir cümle girmem lazım :/
palindrom degil!
okanbilke@gmail.com
Kullanıcı avatarı
okanbilke
Site Kurucusu
Site Kurucusu
 
Mesajlar: 721
Beğendiklerim: 0 mesaj
Beğenilenlerim: 0 mesaj
Kayıt: 15 Mar 2013 13:09
Konum: Ankara

Reklam

Dön C Dili Kod Paylaşımı ve Projeler

Kimler çevrimiçi

Bu forumu gezen kullanıcılar: Hiç bir kayıtlı kullanıcı yok ve 0 misafir


  • Reklam
cron