Öncelikle main fonksiyonumuzda bir string dizisi oluşturmalıyız (kod içerisinde char hsc[20]; ). Daha sonra kullanıcıdan hsc[20] içine atamak üzere scanf ile değer almalıyız. Alınan değeri üstte yeni bir fonksiyonda (pal fonksiyonu) işleme sokacağız.#include <stdio.h> #include <conio.h> #include <string.h> int pal (char hsc[]){ int i, b=1; int u=strlen(hsc); for(i=0;i<u;i++){ if(hsc[i]==hsc[u-(i+1)]){ } else b++; } return b; } int main(){ char hsc[20]; printf("Kelime Griniz\n"); scanf("%s", &hsc); if(pal(hsc)==1) printf("\nGirilen kelime palindromdur.\n"); else printf("\nGirilen kelime palindrom degildir.\n"); return 0; }
int pal (char hsc[]){
int i, b=1;
int u=strlen(hsc);
for(i=0;i<u;i++){
if(hsc[i]==hsc[u-(i+1)]){
}
else
b++;
}
return b;
} burada yapılan işlem şu şekilde ;
öncelikle for döngüsünde kullanmak için int değerler belirlerdik. Daha sonra strlen hazır fonsiyonunu kullanarak girilen kelimenin uzunluğunu bulduk ve bir değere eşitledik (int u=strlen(hsc);). For döngüsünde i<u değeri 'i' kelimenin uzunluğundan küçük olduğu sürece döngü devam etsin anlamına gelmektedir.
if(hsc[i]==hsc[u-(i+1)]) Burada ise her seferinde hsc[i]'deki karakterin uzunluk değerinden i+1 çıkmış haline eşit mi olduğunu kontrol ettik. Burası biraz karışık gelmiş olabilir. Kısaca şu şekilde;
'madam' kelimesi palindromdur. Eğer bunu diziye atamış olsaydık :
m0a1d2a3m4 dizideki yerleri bu şekilde olacaktır. Eğer i=4 iken son m harfine gelmiş olacağız. Ama uzunluğumuz 5'e eşit. Bundan dolayı uzunluktan i+1 çıkartırsak son harf ile ilk harfi kontrol etmiş oluruz ve döngü durana kadar bu devam eder.
if içindeki kontrol değerleri sağlanmazsa else içinde b değeri 1 artıyor. 'b nin' değeri 1 bile artsa sayı palindrom olmayacağından dolayı main foksiyonumuzda (if(pal(hsc)==1)) bu kontrolü yapıp bitiriyoruz.
Anlamadığınız kısımları yorumlarda yazabilirsiniz.
Ekran görüntüleri:
0 yorum:
Yorum Gönder