Palindrome
Açıklama :
Program ilk olarak ilk ve en son basamaktaki sayı değerlerini karşılaştırıyor. En sondaki sayı değerini elde etmek için (sayı/x)%10 formulü kullanılıyor.
x : Mesela sayımız 11211 yani 5 basamaklı. x o zaman 10^5 yapıyoruz. Yani 10^(sayiBasamağı)
ve x her defasında 10’a bölünerek bir önceki basamağın sayı değerini veriyor.
İlk basamağı bulmak için (sayı/y)%10 formulü kullanılıyor.
y : İlk değeri 1’dir. Her döngüde y *= 10; işleminin gerçekleştiriliyor ki bir sonraki basamağa bakabilsin.
Kaynak Kod :
#include <stdio.h>
#include <stdlib.h>
int IsPalindrome(int);
int main()
{
int num=0;
printf("Lutfen sayi girin : ");
scanf("%d", &num);
if(IsPalindrome(num))
printf("Sayi PALINDROMEDIR!");
else
printf("Sayi PALINDROME DEGILDIR!");
return 0;
}
int IsPalindrome(int number)
{
if(number < 10)
return 0;
int sayac=1, basamak=0, birlik=1;
while(sayac <= number)
{
basamak++;
sayac *= 10;
}
sayac /= 10;
basamak /= 2;
while(basamak > 0)
{
//printf("son %d - bas %d\n", ((number/sayac)%10), ((number/birlik)%10));
//Yukarıdaki kod her döngüde karşılaştırılan basamakları yazdırıyor.
if(((number/sayac)%10) != ((number/birlik)%10))
return 0;
sayac /= 10;
birlik *= 10;
basamak --;
}
return 1;
}