C’de 10 Tabanından 2’lik Tabana Çevirme

Karşınızda fonksiyon, mod, while ve for döngüsü kullanarak C dilinde 10’luk tabandan 2’lik tabana geçiş programı.  Güle güle çevirin.

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

int ikilik(int x)
 {
 int i,k[20];
 i=0;
 while(x>=1)
 {
 i++;
 k[i]=x%2;
 x=x/2;
 }

printf("\nIkilik tabandaki sayi karsiligi:");
 for(i=i;i>0;i--)
 printf("%d",k[i]);
 }

int main()
 {
 int a;
 printf("Bir sayi giriniz:");
 scanf("%d",&a);
 ikilik(a);

getch();
 return (0);
 }
Reklamlar

C’de Dosyalama

Arkadaşlar C’de dosyalamanın C++’tan oldukça farklı olduğundan bahsetmiştim şimdi gelin nasıl olduğuna bir bakalım. Ayrıca dosya fonksiyonlarını da sizinle paylaşmak isterim ve tabii ki mod ile açılacak dosyaların ne amaçla açıldığını.

          r    (read only) yalnızca okuma için açar. 
          w    (write only) yalnızca yazma için açar.
          a    (append) ekleme yapmak için açar.
          r+   Okuma/yazma için açar.
          w+   Okuma/yazma için açar.
          a+   Okuma/yazma için açar.

Dosya Fonksiyonları

  Fonksiyon      Görevi
  fopen()       Dosya oluşturur, açar
  fclose()      Dosyayı kapatır
  putc()        Dosyaya karakter yazar
  getc()        Dosyadan karakter okur
  feof()        Dosya sonuna gelindiğini sorgular
  fprintf()     Dosyaya formatlı veri yazar
  fscanf()      Dosyadan formatlı veri okur
  fputs()       Dosyaya katar yazar
  fgets()       Dosyadan katar okur
  fwrite()      Dosyaya dizi yazar
  fread()       Dosyadan dizi okur
#include <stdio.h>
#include<stdlib.h>

int main()
{
 char str[50];
 FILE *f;
 
 f=fopen("hello.txt","w"); //dosyayı açıp içine yazıyor
 if(f==NULL)
 printf("File did not open");
 
 else
 printf("Everything was alright\n\n");
 fputs("HELLO\n",f);
 fprintf(f,"It is my first experience!");
 fclose(f);
 
 
 f=fopen("hello.txt","r"); //kelime kelime yazdırıyor
 while(!feof(f))
 {
 printf("%s \n",str);
 fscanf(f,"%s",str);
 }
 fclose(f);
 
 // while(fgets(str,sizeof str,f)!=NULL) Dosya bitinceye kadar bu işlemi yapıyor
 
 f=fopen("hello.txt","w");
 fseek(f,9,SEEK_SET); //fseek 9 byte imleci hareket ettirmek bişiler eklemek için
 fputs("New",f); //fputs("....",f);
 
 fclose(f);
 system("PAUSE");
}

C Dilinde Katarlar

C ile de size katarları göstermek istiyorum. Tahmin ettiğiniz gibi biraz farklı tam sayıları (integer) printf()’te nasıl %d ile gösteriyorsak; floatı %f, karakteri de %s ile gösteriyoruz. Burada gördüğünüz (sırasıyla) %s=Melis,  %d=62, %f=1.70’i ifade eder. Burada %s ile ifade edilen kelimeler birer katardır.

#include <stdio.h>
#include <conio.h>
int main()
{
 int i;
 char ad[][12]={"Melis","Gökhan","Can"};
 int kilo[]={62,70,65};
 float boy[] ={1.70,1.85,1.68};
 puts("\nISIM \tKILO \tBOY");
 for(i=0;i<3;i++)
 printf("%s\t%d\t%f\n",ad[i],kilo[i],boy[i]);
}

C ile C++ Arasındaki Farklar

  • C fonksiyon tabanlı yapısal bir programlama dilidir, C++ ise OOP (Nesne Yönelimli) bir programlama dilidir.
  • C++, C’ nin bir üst düzeyi olarak düşünülebilir.
  • C düşük seviyeli sistemler için yazılabildiği gibi yüksek sistemlilerde de kullanılabilir. Makine diline daha yakındır.
  • C++ daha kolay ve hızlıdır.
  • C, en popüler yapısal programlama dilidir.
  • C++, en popüler nesne temelli programlama dilidir.

C Dilinde Matrisler

Geldik çok boyutlu diziler olan matrislere.

Öncelikle dizi, belirli sayıdaki değişkeni bir sıra içinde tutmak için kullanılır. Diziler, tek boyutlu ve çok boyutlu olabilir. Örneğin; matrisler, iki boyutlu dizilerdir. Satır ve sutün olmak üzere iki boyuttan oluşurlar.

Aşağıdaki örnekte matrisin kaça kaçlık bir matris olduğu ve elemanları kullanıcı tarafından girilecektir.

#include<stdio.h>
#include<conio.h>
 int main()
{
  int melis[50][50];
  int i,j,satir,sutun;

  printf("Satir sayisini giriniz:"); 
  scanf("%d",&satir);
  printf("Sutun sayisini giriniz:");
  scanf("%d",&sutun);

  printf("\nDizinin degerlerini giriniz:\n");
  for(i=0;i<satir;i++)
  {
   for(j=0;j<sutun;j++)
   {
    printf("\nmelis[%d][%d] icin deger: ",i,j);
    scanf("%d",&melis[i][j]); 
   }
  } 
    printf("\ndizi %d Satir ve %d Sutundan olusan=melis[%d][%d] cok boyutlu dizi:\n",satir,sutun,i,j);
    for(i=0;i<satir;i++)
  {
    for(j=0;j<sutun;j++)
   {
   printf("%2d",melis[i][j]); 
   } 
    printf("\n\n"); 
  }
   getch(); 
}

C Dilinde Gelin ‘H’ Harfi Yapalım!

♣For’ları öğrendiğimize göre bunu yapmak oldukça basit olmalı:

#include <stdio.h>
int main()
{
 int i,j;
 for(i=0;i<=0;i++)
 {
   for(j=0;j<=3;j++)
   printf("*\t*\n");
   printf("---------\n");
 
   for(int a=0;a<=0;a++)
  {
    for(int b=0;b<=3;b++)
    printf("*\t*\n");
  }
 }
}

C Dilinde Sayıları Büyükten Küçüğe Sıralama

Scanf’ten bahsetmemişiz bahsedelim hemen. Scanf fonksiyonunun prototip bildirimi de printf fonksiyonu gibi stdio.h başlık dosyasında yer alır. Yazdığımız programda karşı taraftan veri almak istediğimizde adreslerle iş yapan sevgili ‘scanf’i kullanırız.

Puts() ise scanf() gibi bizden bilgiyi alır. Aslında ‘puts’ un asıl görevi, ileride göreceğimiz katarları alıp, atamak için kullanmaktır. Şöyle ki; sevgili scanf() bizden şu cümleyi almak için yetersizdir: “Programlamayı ögrenmek istiyorum”. Çünkü boşluk gördüğü anda, veriyi almayı keser ve sadece “Programlamayı” kelimesinin atamasını yapar. Boşluk içeren böyle cümleler için puts( ) ve gets( ) fonksiyonları kullanılır.

Bu bilgiler ışığında şimdi gelin programa bakalım. Burada görüldüğü gibi bir sayı dizimiz var x[5]; i ve j ise if yardımıyla 2 sayı arasında kıyaslama yapmak için kullanılacak. ‘Gec’ değişkeni kıyaslama için verilen gecici bir değer. Şimdi gelin sıralamaya başlayalım:

#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
 main()
 {
   int x[5],i,j,gec; puts("5 tane sayi gir:");
   for(i=0;i<5;i++)
  {
    printf("%d Sayi: ",i);
    scanf("%d",&x[i]);
  }

   for(i=0;i<4;i++)
  {
   for(j=i+1;j<5;j++)
   {
     if( x[j]<x[i] )
    {
      gec = x[i];
      x[i] = x[j];
      x[j] = gec;
    }
   }
  }
   for(i=0;i<5;i++)
   printf("\n %d",x[i]);
   getch();
 }