C/C++ Pointer ve String Örneği

C/C++ dilinin önemli konularından Pointerlar ve Stringler ile ilgili bir örnek yapacağız.

Merhaba Arkadaşlar,

C/C++ dilinin önemli konularından Pointerlar ve Stringler ile ilgili bir örnek yapacağız.

Program ilk girişte şifre isteyecek, şifre doğru ise kullanıcı işlem yapabilecek ve şifre için kullanıcıya 3 hak tanıyacağız.

Program kullanıcının belirlediği hane kadar dizi oluştucak ve elemanları kullanıcıdan alacak, karışık sıra ile girilen dizileri kücükten büyüğe sıralayacak, dizinin aritmetik ortalamasını bulacak, en büyük elemanı ve adresini verecek.


#include <stdio.h>

#include <stdlib.h>

#include <string.h> /*string fonksiyonlarını kullanacağım için kütüphaneyi aktif ediyorum*/

int main()

{

        char sifre[5];

        /* 4 haneli sifremi tutacak bir string olusturdum ayrıca '\0' null karakteri için de 1 hane ayırıyorum*/



start:

        printf("Lutfen Sifreyi Giriniz: ");

        gets(sifre);



        /* scanf ile de alabilirdim fakat gets ile almayı tercih ettim, scanf kullanmak daha guvenlidir; gets kullandığınız zaman 4 haneli olan sifreyi 5 haneli olarak girdiğimizde gets() fonksiyonu string buyuklugunu dikkate almadıgı için programın kırılabilme riski var, gösterme amaçlı gets() kullandım*/



        if(strcmp(sifre,"1234") == 0) 

        { 

            puts("Tebrikler, Sifre Dogru.. Yonlendiriliyorsunuz..\n\n"); 

             /*puts() fonksiyonu printf ile aynı gorevi gorur */



            void diziSirala(int dizi[], int N);

            void Bul(int dizi[], int N);

            float Ortalama(int dizi[], int N);



/* program içinde yazdığım fonksiyonlar main fonksiyonunun altında kaldığı için main fonksiyonu yazdığım fonksiyonları tanımayacaktır fonksiyonları kullanabilmek için kendimiz tanıtıyoruz, fonksiyonları main fonksiyonunun üstüne aldıgınız zaman burada tanımlamanıza gerek kalmayacaktır.*/





            int N, temp, dizi[100];



            printf("Dizinin Eleman Sayisini Giriniz: ");

            scanf("%d",&N);

            printf("\n\n");



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

            {

                printf("Dizinin %d. elemanini giriniz: ",i+1);

                scanf("%d", &dizi);

                printf("\n");

            }



            Bul(dizi,N);

            printf("\n");

            

            printf("Dizinin aritmetik ortalamasi: %.2f\n\n",Ortalama(dizi,N));



            diziSirala(dizi, N);

                

        }

        else

        {

            printf("Sifre Yanlis.. Tekrar Deneyin.\n");

            goto start;

        }



            system("pause");

}





void diziSirala(int dizi[], int N)

{

    void diziYazdir(int dizi[], int N);



    int *adres, temp;

    adres = dizi;



    for(int i=0; i<N-1; i++)

    {

        for(int j=i+1; j<N;j++)

        {

            if(*(adres + j) < *(adres + i))

            {

                temp = *(adres + i);

                *(adres + i) = *(adres + j);

                *(adres + j) = temp;

            }

        }

    }



    /* üst kısımda *(adres + j) ile dizi içeriğine pointer ile erişiyorum */



    diziYazdir(dizi,N);



}

void diziYazdir(int dizi[], int N)

{

    printf("Sirali Dizi: \n\n");



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

    {

        printf("%d. dizi elemani: %d\n",i+1,dizi);

    }    

}



void Bul(int dizi[], int N)

{

    int eb = dizi[0];

    int *p = dizi;  /* pointer dizinin ilk elemanının adresini tutacak */

    

    for(int i = 1; i < N; i++)

    {

        if(eb < dizi)

        {

            eb = dizi;

            p = &dizi; /* p dizinin i.elemanının adresini tutacak */

        }

    }



  printf("En buyuk eleman: %d\n", eb);

  printf("En buyuk elemanin adresi: %p\n",p);

}



float Ortalama(int dizi[], int N)

{

   int *k;

   float top=0, ort;

   int i;

  

   k = dizi;     /* veya k = &dizi[0]  işlemi de aynı görevi görecektir. */



   for(i=0; i<N; i++)

   {

      top += *(k+i);

   }

   ort = (top/N);

   return ort;

}




Ekran çıktısı;

  • Etiketler;
Yorum Yaz

Yorum yazabilmek için üye girişi yapmanız gerekiyor!

Yukarı Git