C programlama Pointer(işaretçi) mantığı

ilhan bahar tarafından 21 Kasım 2008 tarihinde yazılmıştır.
Yorum Yok


 

//İlhan BAHAR

//17.11.2008 

//Pointer Genel


//Bu program sayesinde pointerların çalışma mantığını iyice kavramış olacaksınız.Programda kelimeleri tersten yazdırma,uzunluk bulma,karşılaştırma,ascii koduna göre sıralama

//Türkçe karakterleri atarak,yerine ingilizce karakterleri yerleştirmek gibi bir çok ufak programdan oluşmaktadır.


#include <stdio.h>

#include <conio.h>

#include <stdlib.h>//system çalışsın diye ekledim

int Uzunluk_Bul(char);

void Tersten_Yazdir(char *,char);

void Karsilastir(char *,char *);

void Sirala(char);

void Turkce_At(char);

//Uzunluk buluyoruz

int Uzunluk_Bul(char *adres)

{

     

               int uzunluk=0;

               while (*adres)

               {

                     uzunluk++;

                     adres++;

               }

               return uzunluk;   

}

//Kelimeleri tersten yazdırıyoruz

void Tersten_Yazdir(char *adres,char kelime1[])

{

      char *ilkadres,*sonadres;

      char temp;

      int i=0,uzunluk=0;

      uzunluk=Uzunluk_Bul(adres);     

      ilkadres=&kelime1[0];

      sonadres=&kelime1[uzunluk-1];

      //Ortadan itibaren sondakini başa,baştakini sona alıyoruz

      while (i<uzunluk/2)

      {

       temp=*ilkadres;

       *ilkadres=*sonadres;

       *sonadres=temp;

       ilkadres++;

       sonadres–;

       i++;

      }     

      printf (“%s”,kelime1);

      getch();

}


//Pointer yardımıyla kelimeleri karşılaştırıyoruz


void Karsilastir(char *ilkadres,char *sonadres)

{

     if (*ilkadres == *sonadres)

     printf (“\nKelimeler esit”);

     else

     printf (“\nKelimeler esit degil”);

     getch();

}


//Ascii kodu ile sıralama

void Sirala(char *adres)

{

     int temp=0,i=0;

     int karakter[100];

     while (*adres)//Ascii sayı değerlerini bir diziye aktarıyoruz

     {

           karakter[i]=*adres;

           i++;

           adres++;      //Adresi bir artırarak her bir karaktere ulaşıyoruz

     }

    

    

    for (int j=0;j<i-1;j++)//Sıralama birinci for

    {   

        for (int n=0;n<i-1;n++)//Sıralama ikinci for

        {

            if (karakter[n]<karakter[n+1])

            {

                                    temp=karakter[n];

                                    karakter[n]=karakter[n+1];

                                    karakter[n+1]=temp;

            }

        }       

    }

        printf (“\n”);//Karışmaması için bir alt satıra iniliyor.    

       for (int z=0;z<i;z++)//Ekrana büyükten küçüğe sıralanmış olarak yazılır

           {    

               

                printf (“%c”,karakter[z]);

           }   

           getch();

}


//Türkçe karakterleri atıp düzeltelim

void Turkce_At(char kelime1[])

{

     char *adres;

     int karakterler []={-121,-115,-108,-97,-127,-89};

     int duzelt []={99,105,111,115,117,103};

     int deger=0,i=0;

     adres=kelime1;//Kelimemizin adresini alıyoruz

     while (*adres)

     {

           deger=kelime1[i];//Kelimemizin değerini sayısal ascii değerine çeviriyoruz

           for (int j=0;j<6;j++)

           {

             if (deger==karakterler[j])

                *adres=duzelt[j];//Direk kelime adresinden değiştiriyoruz

           }

           adres++;

           i++;

     }

     printf (“\n”);

     for (int j=0;j<i;j++)

     printf (“%c”,kelime1[j]);

     

     getch();

}

main(int)

{

int cikis=1;

char kelime1[50],kelime2[50];

char *adres,*ilkadres,*sonadres;


    do

    {

        //Programın görüntü ekranı

        system (“cls”);

            printf (“\n\n\n\n \t \t \t 1.Kelime boyut belirle”);

            printf (“\n \t \t \t 2.Kelime birlestir”);

            printf (“\n \t \t \t 3.Turkce karakterleri at”);

            printf (“\n \t \t \t 4.Kelime karakterlerini karsilastir”);

            printf (“\n \t \t \t 5.Tersten yazdir”);

            printf (“\n \t \t \t 6.Kelime ascii sirasini belirle”);

            printf (“\n \t \t \t 0.Cikis”);            

            printf (“\n \n  \t \t \t Seciminiz (0-6) =>”);

            scanf (“%d”,&cikis);

            adres=&kelime1[0];//Programda her yerde kullanmak üzere pointer işaretini alıyoruz.

            //Programda bir kere almak adına kontroller yapıyoruz

                 if (cikis !=0)

                 {

                 printf (“\n \nKelimeyi giriniz=”);

                 scanf (“%s”,&kelime1);

                 }

                 if (cikis == 2)

                 {

                           printf (“\nikinci kelimeyi giriniz=”);

                           scanf (“%s”,&kelime2);

                           printf (“\nKelimelerin birlesimi=%s%s”,kelime1,kelime2);

                           getch();

                 }    

                 if (cikis==1)

                 {

                              

                              printf (“\nUzunluk=%d”,Uzunluk_Bul(adres));   

                              getch();

                              

                 }    

                 if (cikis==5)

                              Tersten_Yazdir(adres,kelime1);                      

                 if (cikis==4)

                 {

                              printf (“\nikinci kelimeyi giriniz=”);

                              scanf (“%s”,&kelime2);   

                              ilkadres=&kelime1[0];

                              sonadres=&kelime2[0]; 

                              Karsilastir(ilkadres,sonadres);                          

                 }

                 if (cikis==6)

                             Sirala(adres);           

                 if (cikis==3)

                              Turkce_At(kelime1);

                

     }while (cikis!=0);

}

Şunlar da ilginizi çekebilir;

  • FriendFeed'de Paylaş
  • Facebook'ta Paylaş
  • Twitter'da Paylaş
  • 

    Bu yazı hakkında yorum yapın...





    
    Hemen hatırlatalım, bu sitede yer alan bütün dökümanlar 5846 sayılı Fikir ve Sanat Eserleri Kanununun koruması kapsamındadır. 2008-2010 ©
    Siteden çalıntı değil alıntı yapmak isteyenlerin siteye link vermesi kafidir. "Ben link vermem direk çorlarım" diyenlerde ifşa edilecektir. Siteyi kodlamadık çünkü kodlanmışı (WordPress) vardı. Arama motorları ile arayı iyi tutmak adına Sitemap ekledik, temasını kullandığımız anarşik çocuğu da link verip, bu kısmı sonlandırmış olduk, hayırlı olsun.