8 Aralık 2014 Pazartesi

C Konsol Malloc Kullanarak Hafızada Veri Saklama ve Dizi ile BubbleSort Algoritması Kullanımı

KONU : C Konsol Uygulamalar - Bubble sort algoritması kullanarak konsol ekranından girilen sayıları sıralama. Konsoldan girilen sayıları int tipinde bir diziye atama. Hafızada int tipinde girilen sayıları tutmak için yer ayırma ve bu adresi pointer ile kullanma. Pointer parametre alan fonksiyon tanımlama ve kullanma


#include < stdio.h >
#include < stdlib.h >

void bubbleSort(int [],int);
void swap(int *,int *);
int main(void) {
 int *Arr;
 int i=0,n;
 while(1)
 {
  printf("Eleman sayisini girin: ");
  scanf("%d",&n);
  if(n<0)
  break;
  
  Arr=(int *)malloc(sizeof(int)*n);
  if(Arr==NULL)
  {
   printf("Basarisiz.");
   exit(1);
  }
  
  for(i=0;i < n;i++)
  {
   printf("%d.Eleman: ",i+1);
   scanf("%d",&Arr[i]); 
  }
  
  bubbleSort(Arr,n);


  printf("\n\nSonuc :\n\n");
  for(i=0;i < n;i++)
  {
   printf("%d.Eleman: %d \n",i+1,Arr[i]);
  
  }
  
  free(Arr);
 }
 
 return 0;
}

void bubbleSort(int Array[],int n)
{
 int i,j;
 for(i=0;i < n;i++)
 {
  for(j=0;j < n-1;j++)
  {
   if(Array[j] > Array[j+1])
   swap(&Array[j],&Array[j+1]);
  }
 }
}

void swap(int *ptr1, int*ptr2)
{
 int temp;
 temp=*ptr1;
 *ptr1=*ptr2;
 *ptr2=temp;
}
   

7 Aralık 2014 Pazar

C Konsol İki Boyutlu Diziler Kullanarak Konsoldan Data Alma ve Matriks Şeklinde Konsola Yazdırma

KONU : C Konsol Uygulamalar - iki boyutlu dizilerin kullanımı ve tanımlanması. Bir fonksiyona parametre olarak iki boyutlu bir dizi verme. İki boyutlu diziyi konsoldan girilen sayılar ile doldurma. İki boyutlu bir diziyi pointer olarak gösterip konsol ekranına dizi içeriğini makriks şeklinde yazdırma.
ETİKETLER: c matrix - c matriks- c diziler - c array - c iki boyutlu dizi - c pointer


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

int Matrix1[2][2]={0}; 
int Matrix2[2][2]={0}; 
 

void ShowMatrix(int *); 
void GetMatrixElement(int Matrix[][2],int no) ;

int main(void)
{ 


 //int i,j; 
 //printf("1.Matris:\n\n"); 
 //for(i=0;i<2;i++) 
 //{ 
 // for(j=0;j<2;j++) 
 // { 
 //  printf("%d satir %d sutun=",i+1,j+1); 
 //  scanf("%d",&Matrix1[i][j]); 
 // } 
 //} 


 GetMatrixElement(Matrix1,1);

 ShowMatrix((int *)Matrix1); 

    GetMatrixElement(Matrix2,2);

 ShowMatrix((int *)Matrix2); 

 getch();
 return 0; 
} 


void ShowMatrix(int *ptrMatrix ) 
{ 
 int i,j; 
 for(i=0;i < 2;i++) 
 { 
  for(j=0;j < 2;j++) 
  { 
   printf("%5d",*ptrMatrix); 
   ptrMatrix++; 
  } 
  printf("\n"); 
 } 
} 


void GetMatrixElement(int Matriks[][2], int no) 
{ 
 //Bu alanda 2ye2lik 2 matrisin satir ve sutun sayılarını isteyecek. 
 //Daha sonra ShowMatrix fonksiyonu kullanılarak ekrna gösterilecek. 
 //Nasıl yapabilirim? 

 int i,j; 

 printf("%d. Matriks:\n\n",no); 

 { 
  for(i=0;i < 2;i++) 
  { 
   for(j=0;j < 2;j++) 
   { 
    printf("%d satir %d sutun=",i+1,j+1); 
    scanf("%d", &Matriks[i][j]); 
   } 
  } 

 } 
}
 

29 Kasım 2014 Cumartesi

C Konsol Girilen 5 Sayının Farklı Olmasını Sağlama

KONU : C Konsol Uygulamalar - Klavyeden girilen 5 adet sayının birbirlerinden farklı girilmesini sağlamaktadır. Aynı sayı girilmiş ise kaçıncı sayı ile aynı olduğunu söylemekte ve tekrardan sayı girmesini istemektedir. Bütün sayılar farklı olduğu hesaplandıktan sonra program girilen 5 farklı sayıyı konsol ekranına yazdıracak. Bu işlemden sonra kullanıcıdan prgorama devam edip edilmeyeceğini soran bir yazı konsol ekranına yazdırılacak. Kullanıcı devam seçeneğini seçtikten sonra program kullanıcıdan yeni farklı 5 sayı girilmesini isteyecek.
ETİKETLER: c konsol - c sayılar - c döngüler - c while - c for


//KONU : Klavyeden girilen 5 adet sayının birbirlerinden farklı girilmesini sağlamaktadır.
//Aynı sayı girilmiş ise kaçıncı sayı ile aynı olduğunu söylemekte ve tekrardan sayı girmesini istemektedir. 
 
#include < stdio.h >
#include < stdlib.h >

int main()
{
 int kenarUzunlugu,i,k,secim;

 bool devamEtsinMi=true; //programdan çıkılmak istendiğinde false değerini alacak

 while(devamEtsinMi)
 {
  int girilenSayilar[5];
  int girilenSayiSayisi = 0;
  int girilenSayi = 0;
  int guncellenecekSayi = -1;

  printf("\n 5 tane farkli  sayi giriniz : \n");
  int devamMi = 1;
  bool islemTamam = 1;

  while (true)
  {

   // 5 tane farklı sayı girilmesini bekliyecek
   while (true)
   {
    scanf("%d",&girilenSayi);

    if (girilenSayiSayisi < 5)
    {
     girilenSayilar[girilenSayiSayisi++] = girilenSayi;

     //Yeni sayı girmeye devam ediyorum. 

    }
    else if(islemTamam == 0)
    {
     girilenSayilar[guncellenecekSayi] = girilenSayi;
    }



    if (girilenSayiSayisi == 5)
    {
     islemTamam = 1;
     for (int i = 0; i < girilenSayiSayisi; i++)
     {
      for (int j = i+1; j < girilenSayiSayisi; j++)
      {
       if ( girilenSayilar[i] == girilenSayilar[j])
       {
        printf("\n %d . sayi ile %d. sayi ayni girilmiştir\n ", i+1, j+1);
        printf("\n %d . sayiyi tekra giriniz\n ", j+1);
        guncellenecekSayi = j;
        i = girilenSayiSayisi;
        j = girilenSayiSayisi;
        islemTamam = 0;
       }
       
      }
     }

    }

    if(islemTamam ==1 && girilenSayiSayisi == 5)
    {
     break;
    }
   }

   
      
 
   printf("\n5 sayi girilmiştir. Bunlar: \n ");
   for (int i = 0; i < girilenSayiSayisi; i++)
   {
     printf(" %d  - ",girilenSayilar[i] );
   }

   


   //Kullanıcı yeni 10 sayı girmek isteyip istemediğini soralım

   printf("\n\n\nYeni 5 sayi girmek icin->1, programdan cikmak icin ->0 giriniz");

   scanf("%d",&devamMi); 


   //Eğer kullanıcı programdan çıkmak istiyorsa döngüden break komutu ile çıkalım.

   if (devamMi == 0)
    break;

   girilenSayiSayisi = 0;
  }

  return 0;
 }
}


21 Kasım 2014 Cuma

C Konsol MasterMind Sayı Tahmin Etme Oyunu

KONU : C Konsol Uygulamalar - rastgele 4 basamaklı sayı oluşturma. 4 basamaklı sayıyı basamaklarına ayırma. 4 basamaklı sayı tahmin etme oyunu. Mastermind oyun uygulaması oluşturma. Sonsuz döngü kullanımı ve break komutu kullanımı.
ETİKETLER: c - konsol - mastermind - basamak - matematik - random - rastgele - sayı - for - while


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

void main()
{

 char estimatedNumber[4];

 int  i, length;

 //int tipine dönüştüreceğimiz sayı
  int digitOk = 0;
  int digitNotOk = 0;

 //basamak değeri: abcd girilen sayımız d -> digitValue[3] olarak temsil edecek
 int digitValue[4];

 int targetNumber[4];

 //tahmin edilecek sayının basamaklarını oluşturalım
 for(i=0; i<4; i++)
    {
  targetNumber[i] = (rand() + rand())%10; // rand() fonksiyonu ile 0 - 10 arasında bir sayı oluşturuyorum
 }

 while(true)//sonsuz döngü, çıkılmak istenilene kadar devam edecek bir döngü oluşturuyorum.
 {
  digitOk = 0;
  digitNotOk = 0;

  //konsoldan bir sayı giriniz.
  printf("\n\nEnter a number: ");

  //konsoldan girilen sayıyı oku
  gets(estimatedNumber);

  //sayının uzunluğunu kontrol et
  length = strlen(estimatedNumber);

  //okunan dört basamaklı sayıyı int tipine dönüştür
  for(i=0; i < length; i++)
  {
   digitValue[i] = estimatedNumber[i] - '0';


   bool digitAvailable = false;

   for(int j=0; j<4; j++)
   {
    if(digitValue[i] == targetNumber[j])
    {
     digitAvailable = true;
     break;
    }
   }
   
   if(digitAvailable == true)
   {
    if(digitValue[i] == targetNumber[i])
    {
     digitOk++;
    }
    else
    {
     digitNotOk++;
    }
   }
   
  }

  printf(" Information =  +%d  -%d ", digitOk, digitNotOk);

  if(digitOk == 4)
  {
   break;
  }
 }

 printf("\n ****Game Over**** ");
 printf("\n ****Game Over**** ");
 scanf("%d",&i);
}

20 Kasım 2014 Perşembe

C konsolda konsol ekranına girilen kelimeleri tersine çevirip konsol ekranına yazdırma

KONU : C Konsol Uygulamalar - konsol ekranında girilen kelimeleri tersine çevirip konsol ekranına yazdırma uygulaması.
ETİKETLER: dizi - c - c konsol - string - char - int - ters- for döngüsü


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

void TersiniYaz(char str[]);

int main()
{
 char yazi[100];

 printf(" Tersini yazdirmak istediginiz yaziyi giriniz ");
 
 scanf("%s", yazi);
 
 TersiniYaz(yazi);
 
 printf("Tersine yazilimi : ");
 
 printf("%s",yazi);

 int c;
 scanf("%d", &c);
 
 return 0;
}

void TersiniYaz(char yazi[])
{
 int i,j;

 char tersyazi[100];

 j=0;

 for(i=strlen(yazi)-1; i != -1; i--)
 {
  tersyazi[j]=yazi[i]; 
  j++;  // bir sonraki karaktere geç
 }

 tersyazi[j]='\0';

 strcpy(yazi,tersyazi);
}
   

17 Kasım 2014 Pazartesi

C Konsol bir dizideki elemanların asal mı olup olmadıklarını fonksiyon kullanarak bulma

KONU : C Konsol Uygulamalar - C Konsol bir dizideki elemanların asal mı olup olmadıklarını fonksiyon kullanarak bulma. Asal olan sayıları konsol ekranına yazdırma.
ETİKETLER: c konsol - asal sayı - asal - döngü - if else - for döngüsü


#include < stdio.h >
#include < stdlib.h >
#include < conio.h >  

int asalmi(int sayi);

int main(void)
{

 int diziElemanSayisi = 10;
 int sayilar[] = {2,4,5,6,7,4,3,5,6,7,9,11};
 int deger  = 0;

 for(int i = 0; i < diziElemanSayisi; i++)
 {
  int asal = 1;

  deger = asalmi(sayilar[i]);
  if(deger == 1) 
  {
   printf("%d  ", sayilar[i]);
  }
 }

 getch();
}

int asalmi(int sayi)
{
 int asal = 1;

 for (int i = 2; i < sayi; i++)
 {

  if(sayi < 2)
  {
   asal =0;
  }
  else if(sayi == 2)
  {
   asal =1;
  }
  else if(sayi > 2)
  {
   for (int j = 2; j < sayi; j++)
   {

    if (sayi % j == 0)
     asal = 0;

   }

  }

 }

 // sayı asal ise fonksiyon true dönecek
 return asal;
}

C Konsol dizide en çok tekrarlayan elemanı bulma 2. yöntem

KONU : C Konsol Uygulamalar - dizide en çok tekrarlayan elemanı bulma.
ETİKETLER: dizi - en çok tekrarlayan - array - dizi eleman sayısı - for döngüsü


#include < stdio.h >
//#include < conio.h >
//#define SIZE 10
int main()
{
 int Array[]={2,2,2,3,3,3,3,6,5,8,9,9,9,9,9,9};
 int i,k,j;
 int diziElemanSayisi = 16;
 int enFazlaOlan = -1;
 int enFazlaOlanSayi = -1;
 int tekrarlamaSayisi = 0;
 

 for (i = 0; i < diziElemanSayisi; ++i) {
 
  int sayici = 0;

  for (k = 0; k < diziElemanSayisi; ++k)
   if (Array[k] == Array[i])
    ++sayici;

  if (sayici > tekrarlamaSayisi) {
   tekrarlamaSayisi = sayici;
   enFazlaOlanSayi = Array[i];
  }
 }

 printf("En fazla olan sayi : %d  \nAdet sayisi: %d ",enFazlaOlanSayi,tekrarlamaSayisi);
 printf( "\n" );
 printf( "\n" );
 //getch();
 char a;
 scanf("%s",&a);
 return 0;

}
  

15 Kasım 2014 Cumartesi

C Konsolda Dizide en çok tekrarlayan elemanı bulma

KONU : C Konsol Uygulamalar - dizide en çok tekralayan elemanı bulma
ETİKETLER: diziler - dizi - en çok tekrarlayan


#include < stdio.h >
//#include < conio.h >
//#define SIZE 10
int main()
{
 int Array[]={2,2,2,3,3,3,3,6,5,8,9,9,9,9,9,9};
 int i,k,j,Tekrar,buyuk;
 int diziElemanSayisi = 16;
 int enFazlaOlan = -1;
 int enFazlaOlanSayi = -1;
 int diziElemanSayilari[16];
 
 for(i=0;i< diziElemanSayisi;i++)
 {
  k=0;

  for(j=0;j< diziElemanSayisi;j++)
  {
   if(Array[i]==Array[j])
   {
    k++;
   } 
  }

  diziElemanSayilari[i] = k;

 }

 for(i=0;i< diziElemanSayisi;i++)
 {
   if (diziElemanSayilari[i] > enFazlaOlan)
   {
    enFazlaOlan = diziElemanSayilari[i];
    enFazlaOlanSayi = Array[i];
   }
 }

 printf("En fazla olan sayi : %d  \nAdet sayisi: %d ",enFazlaOlanSayi,k);
 printf( "\n" );
 printf( "\n" );
 //getch();
 char a;
 scanf("%s",&a);
 return 0;

}

1 Temmuz 2014 Salı

C Konsol da 52 Kartı Rastgele Dağıtarak Karıştırılmış Deste Oluşturma

KONU : C Konsol Uygulamalar - 52 kartı rastgele dağıtma . C konsolda rand fonksiyonunu kullanarak rastgele sayılar üretme. Rastgele sayılar üreterek dizi oluşturma.
ETİKETLER: c konsol - c rastgele sayı - c for döngüsü - c if else - c diziler



#include < stdio.h >
#include < stdlib.h >
#include < string.h >
#include < conio.h >
#include < time.h >

int main()
{
 srand(time(0)); //bu her zaman olacak.

 bool  kartdurum [52];
 int karistirilmisDeste [52];

 int rastgele = rand()%52;
 

 for(int i =0 ; i < 52; i++ )
 {
        kartdurum[i] = false ;
 }

 for(int i =0 ; i < 52; i++ )
 {

  //uretilen kart indexde varsa (true) ise bir oyuncu aynı karti bir daha alamayacagi icin tekrar kart gonderilmesi lazım.
  rastgele = rand()%52;
  if (kartdurum[rastgele] == true)
  {
   //aynı kart geldigi surece tekrar bir random kart uretip tekrar yolluyoruz farklı kart gelene kadar.
   while (true)
   {

       rastgele = rand()%52;
    if (kartdurum[rastgele] == false)
     break;
   }
  }

  //ardindan gelen karti tekrar olup olmadigina bakmasi icin tekrar true yaptık(varsayilan deger olarak)
  kartdurum[rastgele] = true;
  
  karistirilmisDeste[i] = rastgele;

 }

 for(int i =0 ; i < 52; i++ )
 {
  printf("%d ",karistirilmisDeste[i]);
 }
 getch();
}


25 Mart 2014 Salı

C Konsol Uygulamalar Yıldız ile Kenar Uzunluğuna Göre Yan Yana 2 Tane İçi Boş Üçgen Çizdirme

KONU : C Konsol Uygulamalar - Yıldız kullanarak konsol ekranına girilen kenar uzunluğuna göre yan yana iki tane içi boş üçgen çizdirme. Kenar uzunlukları farklı veya eşit 2 tane üçgeni konsol ekranına çizdirme.
ETİKETLER:c konsol yıldız - c konsol üçgen - üçgen çizme - konsol işlemleri


#include < stdio.h >

int main()
{
 int kenarUzunlugu,kenarUzunlugu2,i,k,secim;
 
 bool devamEtsinMi=true; //programdan çıkılmak istendiğnde false değerini alacak
 
 while(devamEtsinMi)
 {
  printf("Kenar Uzunluğunu Giriniz : ");
  scanf("%d",&kenarUzunlugu);

  printf("Kenar Uzunluğunu Giriniz : ");
  scanf("%d",&kenarUzunlugu2);
  int ortaNokta = kenarUzunlugu - 1;
  int taban = kenarUzunlugu * 2 - 1;
  int ortaNokta2 = kenarUzunlugu2 - 1;
  int taban2 = kenarUzunlugu2 * 2 - 1;

  for (i = 0; i < kenarUzunlugu; i++)
  {
    for (k = 0; k < taban+taban2; k++)
    {
     if(  k < taban)
     {
    if ((i + k == ortaNokta || k - i == ortaNokta) )
    {
     //Üçgenin kenarları çiziliyor
     printf("*");
    }
    else if (i == ortaNokta)
    {
     //Üçgenin tabanı çiziliyor
     printf("*");
    }
    else
    {
     //Üçgein kenar çizgileri dışındaki kısımlar boş bırakılıyor
     printf(" ");
    }
     }


   if(i <= kenarUzunlugu2 && k >= taban)
   {
    if ((i + k - taban  == ortaNokta2 || k - i - taban == ortaNokta2) )
    {
     //Üçgenin kenarları çiziliyor
     printf("*");
    }
    else if (i == ortaNokta2)
    {
     //Üçgenin tabanı çiziliyor
     printf("*");
    }
    else
    {
     //Üçgein kenar çizgileri dışındaki kısımlar boş bırakılıyor
     printf(" ");
    }
   }
    }
  //yeni satıra geçmek için
   
  printf("\n");
  }
  
  //Çizilmiş olan üçgeni yeni date gelene kadar ekranda beklet
  
  printf("Programdan cikmak icin =>0\nDevam etmek icin =>1 basiniz.\n<=");
  
  scanf("%d",&secim);
  
  if(secim==0)
  {
   devamEtsinMi=false;//programda çık
  }
  else
  {
   devamEtsinMi=true;//programa devam et
  }

 }

 return 0;
}

2 Ocak 2014 Perşembe

C Konsol Tekrarlamalı Faktöriyel Hesaplama - iterative faktöriyel hesaplama

KONU : C Konsol Uygulamalar - iterative faktöriyel hesaplama, tekrarlamalı faktöriyel hesaplama.
ETİKETLER: c faktöriyel hesaplama - c iterative faktöriyel hesaplama - c tekrarlamalı faktöriyel hesaplama - c döngüler - c konsol okuma - c konsol yazdırma.


#include < stdio.h >

int faktoriyel(int sayi);

int main()
{
 int sayi;
 
 int sonuc=0;
 
 printf( "Pozitif bir tam sayı giriniz: ");
 
 scanf("%d", &sayi);
 
 while(sayi < 0)
 {
  printf("Girilen tam sayı pozitif olmalıdır !! \n");
  printf( "Pozitif bir tam sayı giriniz: ");
  scanf("%d", &sayi);
 }
 
 // Girilen değer pozitif ise bu değeri sonuç yaz ve konsola yaz
 
 sonuc = faktoriyel(sayi);//faktoriyel iterative olarak hesaplayan metod sonucu
 
 printf("factorial(%d) = %ld \n",sayi,sonuc);

 //konsol ekranında sonucu görmek için bir karakter girilene kadar bekle
 
 scanf("%d",&sayi);
}

int faktoriyel(int sayi)
{
 int sonuc=1;
 
 //faktoriyeli iterative olarak hesaplayan metod
 
 for(int i=sayi;i > 0;i--)
 {
  sonuc = sonuc * i;
 }

 return sonuc;
 
}
   

Etiketler

Array (9) bool (3) break (1) BubbleSort (1) C (23) char (4) Char Sınıfı (1) conio.h (5) Console (4) Dizi (1) Diziler (11) Döngüler (24) File Sınıfı (1) Fonksiyon (3) For (12) Function (2) Game (1) Getch (1) gets (1) if-else (6) if-else örnekleri (15) int (8) Konsol (16) Konsol Okuma (16) Konsol Yazdırma (17) Matematik (14) Oyun (1) Pointer (2) printf (9) scanf (8) Sort (1) stdio.h (10) stdlib.h (8) strcpy (1) String (1) string.h (2) Swap (1) Switch Case (3) time.h (1) while (5)