C Programlama ile Palindrome Sayıları Bulalım

C dili hakkında bilgiler, kaynaklar, dokümanlar ve örneklerin bulunduğu bölümümüz.
Cevapla
Kullanıcı avatarı
admin
Sistem Geliştiricisi
Sistem Geliştiricisi
Mesajlar: 832
Kayıt: 28 Ağu 2022 04:38
Konum: Database
Meslek: Teknisyen
Teşekkür etti: 456 kez
Teşekkür edildi: 308 kez
İletişim:

C Programlama ile Palindrome Sayıları Bulalım

Mesaj gönderen admin »

C Programlama ile Palindrome Sayıları Bulalım

Tersten ve düzden okunduğu zaman okunuş yönüyle aynı olan sayılara Palindromik Sayılar denir.

Örnek : 3,5,8,101,232,3663,8008,12431 vb.

Asal palindromik sayılar : 2, 3, 5, 7, 11, 101, 131, 151, 181, 191,….
Karesel palindromik sayılar : 0, 1, 4, 9, 121, 484, 676, 10201, 12321, 14641, 40804, 44944,….
Küpsel palindromik sayılar : 0, 1, 8, 343, 1331, 1030301, 1367631, 1003003001,....

Kaynak Kodu :

Kod: Tümünü seç

#include <stdio.h>

int main()
{
   int n, t = 0, temp;

   printf("LUTFEN BIR SAYI GIRINIZ\n");
   scanf("%d",&n);

   temp = n;

   while( temp != 0 )
   {
      t = t * 10;
      t = t + temp%10;
      temp = temp/10;
   }

   if ( n == t )
      printf("%d PALINDROMIK BIR SAYIDIR\n", n);
   else
      printf("%d PALINDROMIK DEGILDIR\n", n);

   return 0;
}
Ekran Çıktısı :

Resim

Resim
Daha zeki olmanın tek yolu, daha zeki bir rakiple oynamaktır.

Etiketler:
Kullanıcı avatarı
admin
Sistem Geliştiricisi
Sistem Geliştiricisi
Mesajlar: 832
Kayıt: 28 Ağu 2022 04:38
Konum: Database
Meslek: Teknisyen
Teşekkür etti: 456 kez
Teşekkür edildi: 308 kez
İletişim:

Re: C Programlama ile Palindrome Sayıları Bulalım

Mesaj gönderen admin »

Aşağıda aynı işlemi yapan başka bir c programı mevcut . Programımız şöyle çalışır: ilk olarak, giriş dizesini yeni bir dizeye (strcpy işlevi) kopyalar ve sonra tersine çevirir (strrev işlevi) ve orijinal dize (strcmp işlevi) ile karşılaştırırız. Her ikisi de aynı karakter dizisine sahipse, yani aynılarsa, dize bir palindromdur.

Kod: Tümünü seç

#include <stdio.h>
#include <string.h>

int main()
{
  char a[100];

  printf("Enter a string to check if it is a palindrome:\n");
  gets(a);

  int length = strlen(a);
  int palindrome = 1;  // Assume the string is a palindrome

  // Check if the string is a palindrome
  for (int i = 0; i < length / 2; i++)
  {
    if (a[i] != a[length - i - 1])  // Check if the corresponding characters are different
    {
      palindrome = 0;  // The string is not a palindrome
      break;
    }
  }

  if (palindrome)
    printf("The string is a palindrome.\n");
  else
    printf("The string is not a palindrome.\n");

  return 0;
}
Resim
derlenmiş hali ekran görüntüsü
Daha zeki olmanın tek yolu, daha zeki bir rakiple oynamaktır.
Kullanıcı avatarı
admin
Sistem Geliştiricisi
Sistem Geliştiricisi
Mesajlar: 832
Kayıt: 28 Ağu 2022 04:38
Konum: Database
Meslek: Teknisyen
Teşekkür etti: 456 kez
Teşekkür edildi: 308 kez
İletişim:

Re: C Programlama ile Palindrome Sayıları Bulalım

Mesaj gönderen admin »

Bir başka tarzda yazılmış aynı işlemi yapan program ; C Programlama String fonksiyonu kullanmadan palindrom kontrolü yapan program

Kod: Tümünü seç

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

int main()
{
  char text[100];
  int begin, middle, end, length = 0;

  printf("Enter a string to check if it is a palindrome:\n");
  fgets(text, sizeof(text), stdin);

  while (text[length] != '\0')
    length++;

  end = length - 1;
  middle = length/2;

  for (begin = 0; begin < middle; begin++)
  {
    // Skip non-alphanumeric characters
    while (!isalnum(text[begin]) && begin < middle)
      begin++;
    while (!isalnum(text[end]) && end > 0)
      end--;

    if (tolower(text[begin]) != tolower(text[end]))
    {
      printf("The string is not a palindrome.\n");
      return 0;
    }
    end--;
  }

  printf("The string is a palindrome.\n");
  return 0;
}
Açıklaması : Bu program, kullanıcıdan bir dizi girmesini ister ve ardından dizideki karşılık gelen alfasayısal karakterleri karşılaştırarak (alfasayısal olmayan karakterleri yok sayarak) dizinin bir palindrom olup olmadığını kontrol eder. Karşılık gelen tüm karakterler aynıysa, program "Dize bir palindromdur" yazdırır. Karşılık gelen karakterlerden herhangi biri farklıysa, program "Dize bir palindrom değildir" yazdırır.

Resim
derlenmiş hali ekran görüntüsü
Daha zeki olmanın tek yolu, daha zeki bir rakiple oynamaktır.
Kullanıcı avatarı
TRWE_2012
Mesaj Panosu Yöneticisi
Mesaj Panosu Yöneticisi
Mesajlar: 580
Kayıt: 30 Ağu 2022 21:59
Konum: BERTUNA/Orion Takım Yıldızı
Meslek: MADEN MÜHENDİSİ
Teşekkür etti: 123 kez
Teşekkür edildi: 421 kez

Re: C Programlama ile Palindrome Sayıları Bulalım

Mesaj gönderen TRWE_2012 »

Döktürmüşün gene....
Verily We have granted thee a manifest Victory
Fetih Suresi - 1.Ayet
Kullanıcı avatarı
admin
Sistem Geliştiricisi
Sistem Geliştiricisi
Mesajlar: 832
Kayıt: 28 Ağu 2022 04:38
Konum: Database
Meslek: Teknisyen
Teşekkür etti: 456 kez
Teşekkür edildi: 308 kez
İletişim:

Re: C Programlama ile Palindrome Sayıları Bulalım

Mesaj gönderen admin »

Kod: Tümünü seç

#include <stdio.h>
int main()
{
   int n, r = 0, t;

   printf("Palindrom olup olmadigi kontrol edilecek tamsayiyi girin\n");
   scanf("%d", &n);

   t = n;

   while (t != 0)
   {
      r = r * 10;
      r = r + t%10;
      t = t/10;
   }

   if (n == r)
      printf("%d palindrom sayidir.\n", n);
   else
      printf("%d palindrome sayi degildir.\n", n);

   return 0;
}
Açıklama : Bu C programı, kullanıcıdan bir tamsayı girmesini ister ve ardından tamsayının bir palindrom olup olmadığını kontrol eder. Palindrom, basamakları ters çevrildiğinde aynı olan bir sayıdır. Örneğin, 121 sayısı, tersi 121 ile aynı olduğu için bir palindromdur. 123 sayısı, tersi 321 ile aynı olmadığı için bir palindrom değildir.

Program önce tamsayının değerini t adlı bir değişkene atar. Ardından, tamsayının basamaklarını tersine çevirmek için bir süre döngüsü kullanır. Tersine çevrilmiş tamsayı, r adı verilen bir değişkende saklanır. While döngüsünden sonra, program orijinal tam sayıyı ters tamsayı ile karşılaştırır. İki tamsayı aynıysa, program "n bir palindromdur" yazdırır. İki tamsayı farklıysa, program "n bir palindrom değildir" yazdırır.

Resim
derlenmiş hali ekran görüntüsü
Daha zeki olmanın tek yolu, daha zeki bir rakiple oynamaktır.
Kullanıcı avatarı
admin
Sistem Geliştiricisi
Sistem Geliştiricisi
Mesajlar: 832
Kayıt: 28 Ağu 2022 04:38
Konum: Database
Meslek: Teknisyen
Teşekkür etti: 456 kez
Teşekkür edildi: 308 kez
İletişim:

Re: C Programlama ile Palindrome Sayıları Bulalım

Mesaj gönderen admin »

C Programlama - Palindrom sayı - Function(Fonksiyon) ve Pointer(İşaretçi) kullanarak nasıl bulunur ;

Kod: Tümünü seç

#include <stdio.h>
 
int is_palindrome(char*);
void copy_string(char*, char*);
void reverse_string(char*);
int string_length(char*);
int compare_string(char*, char*);
 
int main()
{
   char string[100];
   int result;
 
   printf("Bir string girin\n");
   gets(string);
 
   result = is_palindrome(string);
 
   if (result == 1)
      printf("\"%s\" palindrom.\n", string);
   else
      printf("\"%s\" palindrome degil.\n", string);
 
   return 0;
}
 
int is_palindrome(char *string)
{
   int check, length;
   char *reverse;
 
   length = string_length(string);    
   reverse = (char*)malloc(length+1);    
 
   copy_string(reverse, string);
   reverse_string(reverse);
 
   check = compare_string(string, reverse);
 
   free(reverse);
 
   if (check == 0)
      return 1;
   else
      return 0;
}
 
int string_length(char *string)
{
   int length = 0;  
 
   while(*string)
   {
      length++;
      string++;
   }
 
   return length;
}
 
void copy_string(char *target, char *source)
{
   while(*source)
   {
      *target = *source;
      source++;
      target++;
   }
   *target = '\0';
}
 
void reverse_string(char *string)
{
   int length, c;
   char *begin, *end, temp;
 
   length = string_length(string);
 
   begin = string;
   end = string;
 
   for (c = 0; c < (length - 1); c++)
       end++;
 
   for (c = 0; c < length/2; c++)
   {        
      temp = *end;
      *end = *begin;
      *begin = temp;
 
      begin++;
      end--;
   }
}
 
int compare_string(char *first, char *second)
{
   while(*first==*second)
   {
      if (*first == '\0' || *second == '\0')
         break;
 
      first++;
      second++;
   }
   if (*first == '\0' && *second == '\0')
      return 0;
   else
      return -1;
}
Açıklaması : Bu C programı, kullanıcı tarafından girilen bir dizginin bir palindrom olup olmadığını birkaç fonksiyon kullanarak kontrol eder. is_palindrome işlevi, aşağıdaki görevleri gerçekleştirmek için diğer işlevleri çağıran ana işlevdir:

string_length işlevini kullanarak dizenin uzunluğunu hesaplayın.
Malloc kullanarak dizenin bir kopyası için bellek ayırın.
copy_string işlevini kullanarak dizenin bir kopyasını oluşturun.
reverse_string işlevini kullanarak dizenin kopyasını ters çevirin.
Compare_string işlevini kullanarak orijinal dizeyi ters kopyayla karşılaştırın.
free kullanarak dizenin kopyası için ayrılan belleği boşaltın.
Dize bir palindrom ise 1, değilse 0 döndürün.
string_length işlevi, bir dizgenin uzunluğunu, dizi boş sonlandırıcıya ('\0') ulaşana kadar karakter sayısını sayarak hesaplar. Copy_string işlevi, boş sonlandırıcıya ulaşana kadar karakterleri bir dizeden diğerine kopyalar. reverse_string işlevi, dizenin ortasına ulaşana kadar ilk ve son karakterleri, ikinci ve sondan ikinci karakterleri vb. değiştirerek bir dizedeki karakterleri tersine çevirir. Compare_string işlevi, bir fark bulana veya her iki dizenin boş sonlandırıcısına ulaşana kadar iki dizeyi karakter karakter karşılaştırır.

Resim
derlenmiş hali ekran görüntüsü
Daha zeki olmanın tek yolu, daha zeki bir rakiple oynamaktır.
Cevapla

“C Programlama” sayfasına dön