31 Temmuz 2013 Çarşamba

C Dersleri-Ders 10.1 - Proje Geliştirme I (Sayısal loto programı oluşturma)

Merhaba arkadaşlar bugün sizlerle sayısal loto programı yapacağız

C dilinde kullanıcıdan alınan bir String'i tersten yazdırmak

Bu program kullanıcıdan bir karakter kümesi girmesi ister. Daha sonra onu ekrana tersten yazdırır.
mystring dizisi için tanımlanmış olan 120 sayısı en fazla 120 karakter girilebileceği anlamına gelir...
int boyut fonksiyonu dizinin boyutunu kaç karakterli olduğunu bulur. Size ile tanımlanmış olan integer ise bu
görevi yapar. Yani fonksiyonun eleman sayısını belirtir.


#include<stdio.h>
#include<stdlib.h>
int boyut(char []);

int main()
{
    char mystring[120];
    int i,size;
    printf("Bir karakter kumesi giriniz :");
    scanf("%s",mystring); //karakteri tanımlarken %s kullanılır...
    size=boyut(mystring);
    for(i=size-1;i>=0;i--)
    printf("%3c\n",mystring[i]); //karakteri yazdırırken %c kullanılır...
  
    system("pause");
}
int boyut(char c1[])
{
    int i,length;
    i=0;
    length=0;
    while(c1[i]!='\0')
    {
                     length++;
                     i++;
                     }
                     return length;
                     }

30 Temmuz 2013 Salı

C de Çift Sayı Bulma Oyunu

#include <stdio.h>
#include <windows.h>
#include <stdlib.h>
#define SIYAHKAREBAS  printf("%c",219)
#define KARAKTERGOSTER  printf("%c",ascii)
#define DIKEYKAYDIRMA 8
#define URETILECEK_ASCII_SAYISI 50
#define PUAN 400

// Cevap anahtarı oluşturmasını istemiyorsanız 1 i 0 ile değiştirin
#define CEVAPANAHTARIYAP 0


int YATAYKAYDIRMA,    // Tablo büyüklüğüne göre imlecin kayma miktarını tutan global değişken
baslangic_sure=0;   // Gecen süreyi tutan global değişken

void bilgi()
{

// Program bilgisi
system("title PAIRS II - //www.cproggramming.blogspot.com//");
system("color 4f");
printf("\t#############################################################\n");
printf("\t##                                                         ##\n");
printf("\t##                          PAIRS II                       ##\n");
printf("\t##                                                         ##\n");
printf("\t##                 Find pair of each square                ##\n");
printf("\t##                                                         ##\n");
printf("\t##   Press 1  to  start                                    ##\n");
printf("\t##   Press 0  to  exit                                     ##\n");
printf("\t##                                                         ##\n");
printf("\t#############################################################\n");

}

// Seviyeler
void seviye_bilgisi()
{
printf("\n\n");
printf("   1 = Level l \n");
printf("   2 = Level 2 \n");
printf("   3 = Level 3 \n");
printf("   4 = Level 4 \n");
printf("   5 = Level 5 \n");
printf("   6 = Level 6 \n");
printf("   7 = Level 7 \n");
printf("\n PLEASE SELECT LEVEL BY USING LIST ABOVE (1..7)\n");

}

// Oyunun nasıl oynanacağı hakkında bilgi
void yardim()
{
printf("\n\n  INSTRUCTIONS \n");
printf("--------------------------------------------------------\n");
printf(" * Select difficulty of the game with level list\n\n");
printf(" * Type 1 for the easiest table type 7 for the hardest table\n\n");
printf(" * Program will ask you two index number to pair\n\n");
printf(" * ATTENTION -> You must type two index number of squares with one of this \n   seperators : (X) or (x) or (,) or (BLANK) Ex : 5X7\n\n ");
system("pause");
system("CLS");
bilgi();
}

// Yüksek puan
void yuksek_skor(int puan,int seviye)
{
FILE *skor;
skor=fopen("skorlar.p","a+");

char isim[30],
onbellek[5],
metin[30];

int dosyadaki_skor     =0,
dosyadaki_seviye   =0,
en_yuksek          =0,
en_yuksek_seviye   =0,
  i;

fscanf(skor,"%d%d%s",&dosyadaki_skor,&dosyadaki_seviye,isim);
while(!feof(skor))
{
fscanf(skor,"%d%d%s",&dosyadaki_skor,&en_yuksek_seviye,isim);
if(dosyadaki_skor>en_yuksek && seviye==dosyadaki_seviye)
{
en_yuksek=dosyadaki_skor;
en_yuksek_seviye=dosyadaki_seviye;
}
}

if(puan>en_yuksek)
{
strcpy(metin,"NEW HIGH SCORE FOR LEVEL ");
itoa(seviye,onbellek,5);
strcat(metin,onbellek);
MessageBox(NULL,metin,"PAIRS II",MB_OK | MB_ICONASTERISK);
}

for(i=0;i<9;i++)
printf("\n");
 for(i=0;i<3;i++)
 printf("\t");

 printf("   TYPE YOUR NAME : ");
fflush(stdin);
gets(isim);
fprintf(skor,"%d %d %s\n",puan,seviye,isim);
fclose(skor);
}

// İmleci istenilen satıra konumladır
void git(int x,int y) {

COORD koordinat;
koordinat.X=x;
koordinat.Y=y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),koordinat);
}

// Siyah kareleri çiz
void kare_ciz(int satir,int sutun) {

printf("\n\t\t\t\t    PAIRS II\n");
 printf("\n\t     SEPERATE SQUARE NUMBERS BY X or , or [BLANK] (Ex : 1x2)");

YATAYKAYDIRMA=39-2*satir;   // Tablo büyüklüğüne göre imlecin ne kadar kaydırılacağını hesapla

int x,y,
kare_numarasi=1;        // Karelerin index numarasının tutulacağı değişken

git(YATAYKAYDIRMA-1,DIKEYKAYDIRMA-1);

for(y=0;y<sutun*5-3;y++)
{
for(x=0;x<satir*5-3;x++)
{
if(x%5==2)
x+=3;
if(y%5==2)
y+=3;

if(x%5==0 && y%5==0)
 {
git(x+YATAYKAYDIRMA,y+DIKEYKAYDIRMA-1);

// Kare numarası 10 dan küçükse 0 la beraber yazdır
if(kare_numarasi<10)
printf("0");

// Kare numarasını yaz
printf("%d",kare_numarasi);
++kare_numarasi;
}

git(x+YATAYKAYDIRMA,y+DIKEYKAYDIRMA);
//Siyah kare oluştur
SIYAHKAREBAS;
}
}
git(1,y+DIKEYKAYDIRMA+1);
}

/*
Karebilgilerini oluştur ve sakla
Kare bilgilerinde ASCII kodu ve eşlenmiş kareler tutuluyor
ÖRNEĞİN SEVİYE 7 İÇİN kare_bilgileri[16][3] ŞEKLİNDE BİR
DİZİ TANIMLANIYOR VE ÜÇ ELEMANLI ALT DİZİDE KARENİN BİLGİLERİ
SAKLANIYOR.ÖRNEĞİN kare_bilgileri[2][0] elemanı karelerin ascii
kodunu tutuyor.kare_bilgileri[2][1] elemanında 15 kare_bilgileri[2][2] elemanı da 17
karesini tutuyor
*/
int kare_atamasi_yap(int kare_bilgileri[][3],int kare_sayisi)
{
int dolu_kareler[kare_sayisi],         // Aynı atamayı yeniden yapmamak için karaliste
uretilen_asciiler[kare_sayisi],    // Üretilen asciiyi tekrar üretmemek için karaliste
index_1,                           // 1. karenin indexi
index_2,                           // 2. karenin indexi
i=0,j=0,                           // Döngü değişkenleri
k=0,                               // Aynı atama kara listesi index numarasi
karakter_ascii=0;                  // Üretilen ascii

kare_sayisi/=2;                        // Çiftleme yapıldığı için karenin yarısına kadar ilerlemek yeterli

// ASCII listesini boşalt
for(i=0;i<kare_sayisi*2;i++)
{
 uretilen_asciiler[i]=0;
 }

srand(time(NULL));
for(i=0;i<kare_sayisi;i++)
{
karakter_ascii=rand()%URETILECEK_ASCII_SAYISI+123;   // Rasgele 123 ve 155 arasında ascii kodu üret

for(j=0;j<i+1;j++)
{
 if(uretilen_asciiler[j]==karakter_ascii)
{
// Bu ascii atandı çık
karakter_ascii=0;
break;
}
}

// Üretilen ascii tekrar üretilmişse başa dön
if(karakter_ascii==0)
{
--i;
continue;
}

index_1=rand()%(kare_sayisi*2)+1;  // 1. kare için rasgele sayı üret
index_2=rand()%(kare_sayisi*2)+1;  // 1. karenin çiftini rasgele belirle

// Eğer aynı kare numaraları üretilirse 2. kareyi tekrar belirle
while(index_1==index_2)
index_2=rand()%(kare_sayisi*2)+1;

// Bu kare daha önce atandı mı bak
for(j=0;j<k;j++)
{
if(index_1==dolu_kareler[j] || index_2==dolu_kareler[j])
{
index_1=0;
index_2=0;
}
 }
// Kontrol sonu

// Üretilen kare tekrar üretilmişse başa dön
if(index_1==0 || index_2==0)
{
--i;
continue;
}

// Eğer tüm koşullar sağlanırsa aşağıdaki atamalar yapılacak
kare_bilgileri[i][0]=karakter_ascii; // 0. eleman ascii bilgisini tutuyor
kare_bilgileri[i][1]=index_1;        // 1. eleman 1. kareyi tutuyor
kare_bilgileri[i][2]=index_2;        // 2. eleman 1. karenin çiftini tutuyor
dolu_kareler[k]=index_1;                // Atanan kareleri kara listeye ekle
dolu_kareler[k+1]=index_2;
uretilen_asciiler[i]=karakter_ascii;    // Atanan asciiyi kara listeye ekle
k=k+2;                                  // Kara liste değişkenini iki arttır çünkü iki atama yaptık
}

 if(CEVAPANAHTARIYAP==1) {

 FILE *cevap_anahtari;
cevap_anahtari=fopen("anahtar.txt","w");

  for(i=0;i<kare_sayisi;i++)
 {
 for(j=0;j<3;j++)
 {
 fprintf(cevap_anahtari,"   %d  ",kare_bilgileri[i][j]);
 }
 fprintf(cevap_anahtari,"\n");
 }
 fclose(cevap_anahtari);
 }
}

// Kullanıcının girdiği kareleri açan fonksiyon
void goster(int satir,int sutun,int kare_numarasi,int ascii)
{
int i,j,kare_sayac=0,x_koord,y_koord,kare_x,kare_y;

//Kullanıcının kare numarasını bul
for(i=0;i<sutun;i++)
{
for(j=0;j<satir;j++,kare_sayac++)
{
if(kare_sayac==kare_numarasi-1) {
kare_y=i;
kare_x=j;
}
}
}

// Kullanıcının karesinin koordinatlarını bul
x_koord=kare_x*5+YATAYKAYDIRMA;
y_koord=kare_y*5+DIKEYKAYDIRMA;

// Karenin başına konumlan
git(x_koord,y_koord);
printf(" ");
git(x_koord+1,y_koord);
printf(" ");
git(x_koord,y_koord+1);
 KARAKTERGOSTER;              // Istenilen karenin ascii kodunu bas
git(x_koord+1,y_koord+1);
printf(" ");
git(1,DIKEYKAYDIRMA+sutun*5-2); // Imleci indexe sorgusuna konumla
}

// Açılan karelerin kapatılacağı fonksiyon
void kapat(int satir,int sutun,int kare_numarasi)
{
int i,j,
kare_sayac=0,
x_koord,
y_koord,
kare_x,
kare_y;

// Açılan kareyi bul
for(i=0;i<sutun;i++)
{
for(j=0;j<satir;j++,kare_sayac++)
{
if(kare_sayac==kare_numarasi-1) {
kare_y=i;
kare_x=j;
}
}
}
// Bulma sonu

x_koord=kare_x*5+YATAYKAYDIRMA;
y_koord=kare_y*5+DIKEYKAYDIRMA;

// Siyah kareyi tekrar oluştur
git(x_koord,y_koord);
SIYAHKAREBAS;
git(x_koord+1,y_koord);
SIYAHKAREBAS;
git(x_koord,y_koord+1);
SIYAHKAREBAS;
git(x_koord+1,y_koord+1);
SIYAHKAREBAS;
git(1,DIKEYKAYDIRMA+sutun*5-2);
}

// Kullanıcının tahminini değerlendiren fonksiyon
int kareleri_ac(int kare_bilgileri[][3],int kare_sayisi,int satir,int sutun,int seviye)
{
 int kare_1 =0,
kare_2 =0,
eleman_1 =0,
eleman_2 =0,
kare_ascii =0,
kare1_ascii =0,
kare2_ascii =0,
sayac =0,
gecen_sure   =0,
deneme_sayisi   =0,
puan            =0,
i,j =0;

int acilan_kareler[kare_sayisi]; // Açılan kareler için kara liste

char yeni,
  onbellek[5],
  metin[150],    // Yeni oyun için değişken
str[5];       // String

char *bolunmus_string;

// Acilan kareler arrayini 0 la doldur
for(i=0;i<kare_sayisi;i++)
 acilan_kareler[i]=0;

//Döngüye başla
 while(1)
 {
// Kujllanıcı her kare bildiğinde sayac bir artıyor ta ki karelerin yarısına eşit olana kadar
if(sayac==kare_sayisi/2)
{
 gecen_sure=time(NULL)-baslangic_sure;

 puan=PUAN-(100-14*(seviye));
 puan-=(4-(seviye)/2)*deneme_sayisi;
 puan-=gecen_sure;

 if(puan<0)
 puan=0;

system("CLS");
 strcpy(metin,"           CONGRATULATIONS !\n");
strcat(metin,"\nSTATISTICS\n");
strcat(metin,"-------------------------------------\n");
strcat(metin,"Your point\t : ");
itoa(puan,onbellek,10);
strcat(metin,onbellek);
strcat(metin," pts\n");
strcat(metin,"Elapsed time\t : ");
itoa(gecen_sure,onbellek,10);
strcat(metin,onbellek);
strcat(metin," sec.\n");
strcat(metin,"Your Moves\t : ");
itoa(deneme_sayisi+kare_sayisi/2,onbellek,10);
strcat(metin,onbellek);
MessageBox(NULL,metin,"PAIRS II",MB_OK | MB_ICONASTERISK);
yuksek_skor(puan,seviye);
puan=0;

if(sayac==16)
 return 1;

 // Yeni Oyun sorgusu
 if(MessageBox(NULL,"NEXT LEVEL ?","PAIRS II",MB_YESNO | MB_ICONASTERISK)==IDYES)
 return 1;
 else
  return 0;
// Yeni oyun sorgusu sonu
 }

eslenmis_kare:
printf("\n\t\t\t\t OPEN : ");

//Satırı temizle
for(i=0;i<33;i++)
printf(" ");
for(i=0;i<33;i++)
printf("\b");
// Temizleme sonu

//Gereksiz string girişlerini temizle
strcpy(str,"0x0");
// Kullanıcıdan tahmin ettiği karelerin index numarasini al
gets(str);

printf("\n\t\t\t    Type 'end' to quit");

 if(!strcmp(str,"\0") || !strcmp(str,"x") || !strcmp(str,",") || !strcmp(str," ") || !strcmp(str,"X"))
  strcpy(str,"0x0");

bolunmus_string=strtok(str,"Xx, ");

// Girilen komut end ise çıkış yap (end çıkış değeri olarak belirlendi)
if(!strcmp(bolunmus_string,"end"))
exit(1);
// Çıkış kontrol sonu

kare_1=atoi(bolunmus_string);
strcpy(bolunmus_string,"\0"); // Stringi boşalt
bolunmus_string=strtok(NULL,"Xx, ");
kare_2=atoi(bolunmus_string);

// Kullanıcının girdiği karelerin geçerli olup olmadığını kontrol et geçersiz ise değişkene atama yapma
if((kare_1<=0 || kare_1>kare_sayisi || kare_1==kare_2) || (kare_2<=0 || kare_2>kare_sayisi))
 {
 git(1,DIKEYKAYDIRMA+sutun*5-2);
continue;
}
// Geçerli değer kontrol sonu

 // Girilen kare numarası açılan karelerden biri ise girişi reddet başa dön
for(i=0;i<kare_sayisi;i++)
{
if(acilan_kareler[i]==kare_1 || acilan_kareler[i]==kare_2)
{
git(1,DIKEYKAYDIRMA+sutun*5-2);
goto eslenmis_kare;
}
}
// Girilen kare kontrol sonu


// Şayet çift bilinmemişse karelerin ascii kodunu ayrı ayrı bul
 for(i=0;i<kare_sayisi/2;i++)
{
if(kare_bilgileri[i][1]==kare_1 || kare_bilgileri[i][2]==kare_1)
{
 kare1_ascii=kare_bilgileri[i][0];
}
else if(kare_bilgileri[i][1]==kare_2 || kare_bilgileri[i][2]==kare_2)
{
kare2_ascii=kare_bilgileri[i][0];
}
}
// Ascii bulma sonu

// Çiftleme kontrol algoritması
for(i=0;i<kare_sayisi/2;i++)
{
 // Karenin dizide sahip olduğu bilgileri bul
 kare_ascii = kare_bilgileri[i][0];
eleman_1   = kare_bilgileri[i][1];
eleman_2   = kare_bilgileri[i][2];

 // Eşleşti mi ?
if((eleman_1==kare_1 && eleman_2==kare_2) ||
(eleman_1==kare_2 && eleman_2==kare_1))
{
 // Eşleme varsa girilen kareleri aç
 goster(satir,sutun,kare_1,kare_ascii);
 goster(satir,sutun,kare_2,kare_ascii);

// Kullanıcının girdiği kareleri kara listeye ekle acilan_kareler[j]=kare_1;
 acilan_kareler[j]=kare_1;
acilan_kareler[j+1]=kare_2;

Beep(1700,300); // Doğru giriş Beep sesi
sayac++;        // Kullanıcı bir kare daha bildi
j=j+2;          // Açılan kare indexsini 2 arttır ( Kendisi ve çifti girildi)
break;          // Döngüden çık yeni giriş bekle
 }
// Eşleme yoksa
else if(i==kare_sayisi/2-1) { // Son elemanı kontrol etmiş ve bulamamışsa eşleşme yok demektir
//Kareleri aç 1 saniye açık tut ( For ve beep gecikmesiyle  beraber 1,5 saniyeyi buluyor)
goster(satir,sutun,kare_1,kare1_ascii);
goster(satir,sutun,kare_2,kare2_ascii);
sleep(1000);

// Yanlış giriş Beep sesi
Beep(523,300);

// Açılan kareleri kapat
kapat(satir,sutun,kare_1);
kapat(satir,sutun,kare_2);

deneme_sayisi++;

break;
}
}
}
}

int main()
{
bilgi();

int X_boyut                    =0,
Y_boyut                    =0,
kare_sayisi                =0,
seviye                     =0,
seviye_bayrak              =0,
i,j;

char command,
yeni;

// Komut döngüsü
while(1)
{
printf("\n Choice -> ");
command=getche();

if(command=='0')
return 0;
else if(command=='1') {
yardim();
 baslangic_sure=time(NULL);
break;
}
else {
system("CLS");
bilgi();
printf("\n\n INVALID CHOICE \n\n");
sleep(1500);
system("CLS");
bilgi();
}
}
// komut döngüsü sonu

// Döngüden çıkarsa geçerli komut demektir ekranı temizle ve hazırla
system("CLS");
bilgi();
seviye_bilgisi();

 while(1)
 {
 // Eğer sonraki seviye için seviye_bayrak 1 olmamışsa kullanıcının hangi seviyeyi oynamak istediğini sor
if(seviye_bayrak==0)
{
printf(" ");
scanf("%d",&seviye);
fflush(stdin);
}
// Seviyeye göre kare boyutlarını oluştur (X yataydaki kare sayısı Y düşeydeki kare sayısı)
switch(seviye)
{
case 1 :
X_boyut=2;
Y_boyut=2;
break;

case 2 :
X_boyut=4;
Y_boyut=3;
break;

case 3 :
X_boyut=4;
Y_boyut=4;
break;

case 4 :
X_boyut=5;
Y_boyut=4;
 break;

case 5 :
X_boyut=6;
Y_boyut=4;
break;

case 6 :
X_boyut=7;
Y_boyut=4;
break;

case 7 :
X_boyut=8;
Y_boyut=4;
break;

// Girilen seviye 1 7 arasında değilse uyarı göster tekrar giriş iste
 default :
 printf("\n INVALID CHOICE ! \n Please enter a number between 1 and 7\n");
 seviye=0;
 sleep(1800);
 system("CLS");
 bilgi();
 seviye_bilgisi();
 continue;
}

// Fonksiyona parametre olarak geçirilecek kare sayısı
 kare_sayisi=X_boyut*Y_boyut;

 int kare_bilgileri[kare_sayisi/2][3];

system("CLS");
kare_ciz(X_boyut,Y_boyut);
kare_atamasi_yap(kare_bilgileri,kare_sayisi);

// kareleri_ac() fonksiyonu 1 döndürürse sonraki seviye 0 döndürürse çıkış demektir
if(kareleri_ac(kare_bilgileri,kare_sayisi,X_boyut,Y_boyut,seviye)) {
// Sonraki seviye için diziyi boşalt
for(i=0;i<kare_sayisi/2;i++)
{
for(j=0;j<3;j++)
{
kare_bilgileri[i][j]=0;
}
 }

 if(seviye==7)
{
do
{
printf("\n \t\t\t  YOU HAVE COMPLETED ALL LEVELS \n \t\t\t  Do you want to play new game ?");
yeni=getch();
yeni=toupper(yeni);
} while(yeni!='Y' && yeni!='N');

if(yeni=='N')
return 0;
else if(yeni=='Y')
seviye=0;
}

 time(&baslangic_sure); // Süreyi sıfırla
system("CLS");
seviye++;
 seviye_bayrak=1;
}

else
 return 0;
}
}#include <stdio.h>
#include <windows.h>
#include <stdlib.h>
#define SIYAHKAREBAS  printf("%c",219)
#define KARAKTERGOSTER  printf("%c",ascii)
#define DIKEYKAYDIRMA 8
#define URETILECEK_ASCII_SAYISI 50
#define PUAN 400

// Cevap anahtarı oluşturmasını istemiyorsanız 1 i 0 ile değiştirin
#define CEVAPANAHTARIYAP 0


int YATAYKAYDIRMA,    // Tablo büyüklüğüne göre imlecin kayma miktarını tutan global değişken
baslangic_sure=0;   // Gecen süreyi tutan global değişken

void bilgi()
{

// Program bilgisi
system("title PAIRS II - //www.cproggramming.blogspot.com//");
system("color 4f");
printf("\t#############################################################\n");
printf("\t##                                                         ##\n");
printf("\t##                          PAIRS II                       ##\n");
printf("\t##                                                         ##\n");
printf("\t##                 Find pair of each square                ##\n");
printf("\t##                                                         ##\n");
printf("\t##   Press 1  to  start                                    ##\n");
printf("\t##   Press 0  to  exit                                     ##\n");
printf("\t##                                                         ##\n");
printf("\t#############################################################\n");

}

// Seviyeler
void seviye_bilgisi()
{
printf("\n\n");
printf("   1 = Level l \n");
printf("   2 = Level 2 \n");
printf("   3 = Level 3 \n");
printf("   4 = Level 4 \n");
printf("   5 = Level 5 \n");
printf("   6 = Level 6 \n");
printf("   7 = Level 7 \n");
printf("\n PLEASE SELECT LEVEL BY USING LIST ABOVE (1..7)\n");

}

// Oyunun nasıl oynanacağı hakkında bilgi
void yardim()
{
printf("\n\n  INSTRUCTIONS \n");
printf("--------------------------------------------------------\n");
printf(" * Select difficulty of the game with level list\n\n");
printf(" * Type 1 for the easiest table type 7 for the hardest table\n\n");
printf(" * Program will ask you two index number to pair\n\n");
printf(" * ATTENTION -> You must type two index number of squares with one of this \n   seperators : (X) or (x) or (,) or (BLANK) Ex : 5X7\n\n ");
system("pause");
system("CLS");
bilgi();
}

// Yüksek puan
void yuksek_skor(int puan,int seviye)
{
FILE *skor;
skor=fopen("skorlar.p","a+");

char isim[30],
onbellek[5],
metin[30];

int dosyadaki_skor     =0,
dosyadaki_seviye   =0,
en_yuksek          =0,
en_yuksek_seviye   =0,
  i;

fscanf(skor,"%d%d%s",&dosyadaki_skor,&dosyadaki_seviye,isim);
while(!feof(skor))
{
fscanf(skor,"%d%d%s",&dosyadaki_skor,&en_yuksek_seviye,isim);
if(dosyadaki_skor>en_yuksek && seviye==dosyadaki_seviye)
{
en_yuksek=dosyadaki_skor;
en_yuksek_seviye=dosyadaki_seviye;
}
}

if(puan>en_yuksek)
{
strcpy(metin,"NEW HIGH SCORE FOR LEVEL ");
itoa(seviye,onbellek,5);
strcat(metin,onbellek);
MessageBox(NULL,metin,"PAIRS II",MB_OK | MB_ICONASTERISK);
}

for(i=0;i<9;i++)
printf("\n");
 for(i=0;i<3;i++)
 printf("\t");

 printf("   TYPE YOUR NAME : ");
fflush(stdin);
gets(isim);
fprintf(skor,"%d %d %s\n",puan,seviye,isim);
fclose(skor);
}

// İmleci istenilen satıra konumladır
void git(int x,int y) {

COORD koordinat;
koordinat.X=x;
koordinat.Y=y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),koordinat);
}

// Siyah kareleri çiz
void kare_ciz(int satir,int sutun) {

printf("\n\t\t\t\t    PAIRS II\n");
 printf("\n\t     SEPERATE SQUARE NUMBERS BY X or , or [BLANK] (Ex : 1x2)");

YATAYKAYDIRMA=39-2*satir;   // Tablo büyüklüğüne göre imlecin ne kadar kaydırılacağını hesapla

int x,y,
kare_numarasi=1;        // Karelerin index numarasının tutulacağı değişken

git(YATAYKAYDIRMA-1,DIKEYKAYDIRMA-1);

for(y=0;y<sutun*5-3;y++)
{
for(x=0;x<satir*5-3;x++)
{
if(x%5==2)
x+=3;
if(y%5==2)
y+=3;

if(x%5==0 && y%5==0)
 {
git(x+YATAYKAYDIRMA,y+DIKEYKAYDIRMA-1);

// Kare numarası 10 dan küçükse 0 la beraber yazdır
if(kare_numarasi<10)
printf("0");

// Kare numarasını yaz
printf("%d",kare_numarasi);
++kare_numarasi;
}

git(x+YATAYKAYDIRMA,y+DIKEYKAYDIRMA);
//Siyah kare oluştur
SIYAHKAREBAS;
}
}
git(1,y+DIKEYKAYDIRMA+1);
}

/*
Karebilgilerini oluştur ve sakla
Kare bilgilerinde ASCII kodu ve eşlenmiş kareler tutuluyor
ÖRNEĞİN SEVİYE 7 İÇİN kare_bilgileri[16][3] ŞEKLİNDE BİR
DİZİ TANIMLANIYOR VE ÜÇ ELEMANLI ALT DİZİDE KARENİN BİLGİLERİ
SAKLANIYOR.ÖRNEĞİN kare_bilgileri[2][0] elemanı karelerin ascii
kodunu tutuyor.kare_bilgileri[2][1] elemanında 15 kare_bilgileri[2][2] elemanı da 17
karesini tutuyor
*/
int kare_atamasi_yap(int kare_bilgileri[][3],int kare_sayisi)
{
int dolu_kareler[kare_sayisi],         // Aynı atamayı yeniden yapmamak için karaliste
uretilen_asciiler[kare_sayisi],    // Üretilen asciiyi tekrar üretmemek için karaliste
index_1,                           // 1. karenin indexi
index_2,                           // 2. karenin indexi
i=0,j=0,                           // Döngü değişkenleri
k=0,                               // Aynı atama kara listesi index numarasi
karakter_ascii=0;                  // Üretilen ascii

kare_sayisi/=2;                        // Çiftleme yapıldığı için karenin yarısına kadar ilerlemek yeterli

// ASCII listesini boşalt
for(i=0;i<kare_sayisi*2;i++)
{
 uretilen_asciiler[i]=0;
 }

srand(time(NULL));
for(i=0;i<kare_sayisi;i++)
{
karakter_ascii=rand()%URETILECEK_ASCII_SAYISI+123;   // Rasgele 123 ve 155 arasında ascii kodu üret

for(j=0;j<i+1;j++)
{
 if(uretilen_asciiler[j]==karakter_ascii)
{
// Bu ascii atandı çık
karakter_ascii=0;
break;
}
}

// Üretilen ascii tekrar üretilmişse başa dön
if(karakter_ascii==0)
{
--i;
continue;
}

index_1=rand()%(kare_sayisi*2)+1;  // 1. kare için rasgele sayı üret
index_2=rand()%(kare_sayisi*2)+1;  // 1. karenin çiftini rasgele belirle

// Eğer aynı kare numaraları üretilirse 2. kareyi tekrar belirle
while(index_1==index_2)
index_2=rand()%(kare_sayisi*2)+1;

// Bu kare daha önce atandı mı bak
for(j=0;j<k;j++)
{
if(index_1==dolu_kareler[j] || index_2==dolu_kareler[j])
{
index_1=0;
index_2=0;
}
 }
// Kontrol sonu

// Üretilen kare tekrar üretilmişse başa dön
if(index_1==0 || index_2==0)
{
--i;
continue;
}

// Eğer tüm koşullar sağlanırsa aşağıdaki atamalar yapılacak
kare_bilgileri[i][0]=karakter_ascii; // 0. eleman ascii bilgisini tutuyor
kare_bilgileri[i][1]=index_1;        // 1. eleman 1. kareyi tutuyor
kare_bilgileri[i][2]=index_2;        // 2. eleman 1. karenin çiftini tutuyor
dolu_kareler[k]=index_1;                // Atanan kareleri kara listeye ekle
dolu_kareler[k+1]=index_2;
uretilen_asciiler[i]=karakter_ascii;    // Atanan asciiyi kara listeye ekle
k=k+2;                                  // Kara liste değişkenini iki arttır çünkü iki atama yaptık
}

 if(CEVAPANAHTARIYAP==1) {

 FILE *cevap_anahtari;
cevap_anahtari=fopen("anahtar.txt","w");

  for(i=0;i<kare_sayisi;i++)
 {
 for(j=0;j<3;j++)
 {
 fprintf(cevap_anahtari,"   %d  ",kare_bilgileri[i][j]);
 }
 fprintf(cevap_anahtari,"\n");
 }
 fclose(cevap_anahtari);
 }
}

// Kullanıcının girdiği kareleri açan fonksiyon
void goster(int satir,int sutun,int kare_numarasi,int ascii)
{
int i,j,kare_sayac=0,x_koord,y_koord,kare_x,kare_y;

29 Temmuz 2013 Pazartesi

C Programlamada Görsel Hesap Makinesi Örneği

#include<stdio.h>
#include<windows.h>
int secim;
void rengim(int renk)
{
 HANDLE hStdout;
 hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
 SetConsoleTextAttribute(hStdout, renk);
}
int topla(int sayi1 ,int sayi2)
{
 return (sayi1+sayi2);
}
int cikar(int sayi1 ,int sayi2)
{
 return (sayi1-sayi2);
}
int carp(int sayi1 ,int sayi2)
{
 return (sayi1*sayi2);
}
int bol(int sayi1 ,int sayi2)
{
 if(sayi2!=0)
 return (sayi1/sayi2);
}
void gotoxy(short x, short y)
{
 HANDLE hConsoleOutput;
 COORD Cursor_Pos={x-1,y-1};
 hConsoleOutput=GetStdHandle(STD_OUTPUT_HANDLE);
 SetConsoleCursorPosition(hConsoleOutput,Cursor_Pos);
}
void cerceve(int x1,int x2,int y1,int y2)
{
 int i,j;
 for(i=x1;i<=x2;i++)
 {
 gotoxy(i,y1);printf("%c",196);
 gotoxy(i,y2);printf("%c",196);
 }
 for(j=y1;j<=y2;j++)
 {
 gotoxy(x1,j);printf("%c",179);
 gotoxy(x2,j);printf("%c",179);
 }
 gotoxy(x1,y1);printf("%c",218);
 gotoxy(x2,y1);printf("%c",191);
 gotoxy(x2,y2);printf("%c",217);
 gotoxy(x1,y2);printf("%c",192);
}
void baslangic()
{
 int i,j;
 gotoxy(25,20);printf("");
 gotoxy(20,14);printf("HESAP MAKINASI YUKLENIYOR");
 for(j=15;j<=50;j++)
 {
 gotoxy(j,16);printf("%c",196);
 gotoxy(j,18);printf("%c",196);
 }
 for(i=15;i<=50;i++)
 {
 rengim(4);
 gotoxy(i,17);printf("%c",177);
 Sleep(100);
 rengim(7);
 }
}
void menu()
{
 system("cls");
 cerceve(1,15,1,15);
 rengim(4);
 gotoxy(2,2);printf("ISLEMLER\n");
 gotoxy(2,3);printf("--------");
 rengim(5);
 gotoxy(2,4);printf("1-TOPLAMA");
 rengim(6);
 gotoxy(2,6);printf("2-CIKARMA");
 rengim(3);
 gotoxy(2,8);printf("3-CARPMA");
 rengim(8);
 gotoxy(2,10);printf("4-BOLME");
 rengim(7);
 gotoxy(2,12);printf("Seciminiz:");
 scanf("%d",&secim);
}
main()
{
 int say1,say2;
 baslangic();
 Sleep(300);
 menu();
 cerceve(25,60,1,20);
 gotoxy(30,2);printf("1.sayiyi gir: ");scanf("%d",&say1);
 gotoxy(30,3);printf("2.sayiyi gir: ");scanf("%d",&say2);
 switch(secim)
 {
 case 1:
 {
 rengim(5);
 gotoxy(35,6);printf("%d",say1);
 gotoxy(35,8);printf("%d",say2);
 gotoxy(30,9);printf("+");
 gotoxy(30,10);printf("---------");
 gotoxy(35,11);printf("%d",topla(say1,say2));
 break;
 }
 case 2:
 {
 rengim(6);
 gotoxy(35,6);printf("%d",say1);
 gotoxy(35,8);printf("%d",say2);
 gotoxy(30,9);printf("-");
 gotoxy(30,10);printf("---------");
 gotoxy(35,11);printf("%d",cikar(say1,say2));
 break;
}
 case 3:
 rengim(7);
 {
 gotoxy(35,6);printf("%d",say1);
 gotoxy(35,8);printf("%d",say2);
 gotoxy(30,9);printf("x");
 gotoxy(30,10);printf("---------");
 gotoxy(35,11);printf("%d",carp(say1,say2));
 break;
 }
 case 4:
 {
 rengim(8);
 gotoxy(35,6);printf("%d",say1);
 gotoxy(34,7);printf("----");
 gotoxy(35,8);printf("%d",say2);
 gotoxy(30,9);printf("=");
 gotoxy(30,10);printf("---------");
 gotoxy(35,11);printf("%d",bol(say1,say2));
 break;
 }
 default:
 {
 printf("yanlis secim");
 }
 }
 gotoxy(1,24);
getchar();
getchar();

}

27 Temmuz 2013 Cumartesi

Paragraf veya Cümlede Kelime Bulup Değiştirme

#include<stdio.h>
#include<conio.h>
#include<string.h>
int main()
{
char paragraf[500],kelime[15],degistir[15];
printf("Bir paragraf veya cumle giriniz\n");
gets(paragraf);
printf("Paragrafta bulunacak ve sonra da degistirilecek kelimeyi giriniz\n");
scanf("%s%s",kelime,degistir);
int a,b,i,j,c;
a=strlen(kelime);
b=strlen(paragraf);
c=strlen(degistir);
j=-1;
for(i=0;i<b-a+1;i++)
{
if(strncmp(paragraf+i,kelime,a)==0)
{
j=i;
break;
}
}

if(j==-1)
printf("kelime paragrafta bulunamadi\n");
else
{
if(c>a)
{
for(i=b;i>j+a-1;i--)
paragraf[i+c-a]=paragraf[i];
}
else if(a>c)
{
for(i=j+c;i<b+1;i++)
paragraf[i]=paragraf[i+a-c];
}

for(i=j;i<j+c;i++)
paragraf[i]=degistir[i-j];


}
printf("paragrafin son hali:\n%s\n",paragraf);
getch();
return 0;
}

Buckys C++ Programming Tutorials - 62 - Exceptions

26 Temmuz 2013 Cuma

Basit Bir Egitim Proğramı, İlköğretim Düzeyinde +,-,*,/ Gibi Sorular Sorarak Bunların Cevabını Kullanıcıdan İsteyen Eğitim Programı

#include<stdio.h>
int sayac=1,basari=0,sayi,seviye;   // Global Değişkenler..
int seviye_sec(void);
int islem_sec(void);
void islem_arti(int,int);
void islem_eksi(int,int);
void islem_carpi(int,int);
void islem_bolu(int,int);
int main(void)
{
char devam_mi;
int rasgele_sayi_1,rasgele_sayi_2,islem;
srand(time(NULL));
do {
seviye = seviye_sec();
printf("\n");
islem = islem_sec();
printf("\n");
if(seviye==1) {
rasgele_sayi_1 = 1+rand()%10;
rasgele_sayi_2 = 1+rand()%10;
switch(islem) {
case 1:
islem_arti(rasgele_sayi_1,rasgele_sayi_2);
break;
case 2:
islem_eksi(rasgele_sayi_1,rasgele_sayi_2);
break;
case 3:
islem_carpi(rasgele_sayi_1,rasgele_sayi_2);
break;
case 4:
islem_bolu(rasgele_sayi_1,rasgele_sayi_2);
break;
}
}
else {
rasgele_sayi_1 = 10+rand()%90;
rasgele_sayi_2 = 10+rand()%90;
switch(islem) {
case 1:
islem_arti(rasgele_sayi_1,rasgele_sayi_2);
break;
case 2:
islem_eksi(rasgele_sayi_1,rasgele_sayi_2);
break;
case 3:
islem_carpi(rasgele_sayi_1,rasgele_sayi_2);
break;
case 4:
islem_bolu(rasgele_sayi_1,rasgele_sayi_2);
break;
}
}
printf("\n");
printf("Devam Etmek İstermisiniz?..(e,h)=..");
devam_mi=getche();
printf("\n\n");
sayac=1;
basari=0;
}while(devam_mi=='e');
printf("Programimizi Kullandiginiz Icin Tesekkurler..\n");
printf("Hoscakalin...");
getch();return 0;
}
int seviye_sec(void)
{
printf("BIR BASAMAKLI ISLEMLER ICIN \"1\"E...\n");
printf("IKI BASAMAKLI ISLEMLER ICIN \"2\"E BASINIZ...\n");
printf("LUTFEN SECENEGINIZI GIRINIZ...");
scanf("%d",&seviye);
return seviye;
}
int islem_sec(void)
{
int islem;
printf("TOPLAMA ICIN \"1\"E...\n");
printf("CIKARMA ICIN \"2\"E...\n");
printf("CARPMA ICIN  \"3\"E...\n");
printf("BOLME ICIN   \"4\"E BASINIZ...\n");
printf("LUTFEN SECENEGINIZI GIRINIZ...");
scanf("%d",&islem);
return islem;
}
void islem_arti(int rasgele_1,int rasgele_2)
{
printf("%d arti %d kac eder?..",rasgele_1,rasgele_2);
scanf("%d",&sayi);
do {
if(sayi==(rasgele_1 + rasgele_2)) {
switch(sayac) {
case 1:
printf("Mukemmelsin");
break;
case 2:
printf("Cok Guzel");
break;
case 3:
printf("Aferin");
break;
default:
printf("Boyle Devam Et");
break;
}
basari=1;
}
else {
switch(sayac) {
case 1:
printf("Hayir Lutfen Tekrar Dene...");
break;
case 2:
printf("Yanlis.Lutfen Tekrar Dene...");
break;
case 3:
printf("Hayir.Denemeye Devam...");
break;
default:
printf("Pes Etmeyin...");
break;
}
scanf("%d",&sayi);
}
sayac++;
}while(basari!=1);
}
void islem_eksi(int rasgele_1,int rasgele_2)
{
printf("%d eksi %d kac eder?..",rasgele_1,rasgele_2);
scanf("%d",&sayi);
do {
if(sayi==(rasgele_1 - rasgele_2)) {
switch(sayac) {
case 1:
printf("Mukemmelsin");
break;
case 2:
printf("Cok Guzel");
break;
case 3:
printf("Aferin");
break;
default:
printf("Boyle Devam Et");
break;
}
basari=1;
}
else {
switch(sayac) {
case 1:
printf("Hayir Lutfen Tekrar Dene...");
break;
case 2:
printf("Yanlis.Lutfen Tekrar Dene...");
break;
case 3:
printf("Hayir.Denemeye Devam...");
break;
default:
printf("Pes Etmeyin...");
break;
}
scanf("%d",&sayi);
}
sayac++;
}while(basari!=1);
}
void islem_carpi(int rasgele_1,int rasgele_2)
{
printf("%d carpi %d kac eder?..",rasgele_1,rasgele_2);
scanf("%d",&sayi);
do {
if(sayi==(rasgele_1 * rasgele_2)) {
switch(sayac) {
case 1:
printf("Mukemmelsin");
break;
case 2:
printf("Cok Guzel");
break;
case 3:
printf("Aferin");
break;
default:
printf("Boyle Devam Et");
break;
}
basari=1;
}
else {
switch(sayac) {
case 1:
printf("Hayir Lutfen Tekrar Dene...");
break;
case 2:
printf("Yanlis.Lutfen Tekrar Dene...");
break;
case 3:
printf("Hayir.Denemeye Devam...");
break;
default:
printf("Pes Etmeyin...");
break;
}
scanf("%d",&sayi);
}
sayac++;
}while(basari!=1);
}
void islem_bolu(int rasgele_1,int rasgele_2)
{
if(rasgele_1%rasgele_2!=0) {
if(seviye==1) {
do {
rasgele_1 = 1 + rand()%9;
rasgele_2 = 1 + rand()%9;
}while(rasgele_1%rasgele_2!=0);
}
else {
do {
rasgele_1 = 10+rand()%90;
rasgele_2 = 10+rand()%90;
}while(rasgele_1%rasgele_2!=0);
}
}
printf("%d bolu %d kac eder?..",rasgele_1,rasgele_2);
scanf("%d",&sayi);
do {
if(sayi==(rasgele_1 / rasgele_2)) {
switch(sayac) {
case 1:
printf("Mukemmelsin");
break;
case 2:
printf("Cok Guzel");
break;
case 3:
printf("Aferin");
break;
default:
printf("Boyle Devam Et");
break;
}
basari=1;
}
else {
switch(sayac) {
case 1:
printf("Hayir Lutfen Tekrar Dene...");
break;
case 2:
printf("Yanlis.Lutfen Tekrar Dene...");
break;
case 3:
printf("Hayir.Denemeye Devam...");
break;
default:
printf("Pes Etmeyin...");
break;
}
scanf("%d",&sayi);
}
sayac++;
}while(basari!=1);
}

23 Temmuz 2013 Salı

Adam Asmaca Oyunu Yazma

#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<ctype.h>
#include<stdlib.h>
#include<time.h>
#define SIZE 50000
int size(char array[]);
int main(void)
{
int size_of_str,i,j,k,t=0,m=0,c=0,a,z,v,g=0,r,q,w=0,x=0,lengthStrDogru,lengthStrYanlis,lengthStrYanlisDogru;
char predict,tahmin;//kullanicinin tahmin ettigi harfler
char str1[SIZE]="melankoli";
char str2[SIZE]="depresyon";
char str3[SIZE]="dinazor";
char str4[SIZE]="akvaryum";
char str5[SIZE]="karnibahar";
char str6[SIZE]="solaryum";
char str7[SIZE]="brokoli";
char str8[SIZE]="trabzon";
char str9[SIZE]="salyangoz";
char str10[SIZE]="saklambac";
char str11[SIZE]="psikolog";
char str12[SIZE]="menekse";
char str13[SIZE]="bilgisayar";
char str14[SIZE]="sandalye";
char str15[SIZE]="sizofreni";
char str16[SIZE]="lisansustu";
char str17[SIZE]="pardesu";
char str18[SIZE]="imambayildi";
char str19[SIZE]="jupiter";
char str20[SIZE]="buzdolabi";
char karsilastirma[SIZE];
char str[SIZE];              //bilgisayaryn rastgele sectigi stringi str ye atiyoruz.
char str_yanlis[SIZE];
char str_dogru[SIZE];      //kullanicinin girdigi yanlis harfler bu stringde toplaniyor.
char str0[SIZE];             //'_'leri oldugu kullaniciya ait ilk string.
srand(time(NULL));
a=rand () %20 + 1;
/*Bu bolumde bilgisayarin rastgele atadigi 'a' degerine gore stringlerden biri str'ye ataniyor.*/
switch (a)
{
case 1:
strcpy(str,str1);
break;
case 2:
strcpy(str,str2);
break;
case 3:
strcpy(str,str3);
break;
case 4:
strcpy(str,str4);
break;
case 5:
strcpy(str,str5);
break;
case 6:
strcpy(str,str6);
break;
case 7:
strcpy(str,str7);
break;
case 8:
strcpy(str,str8);
break;
case 9:
strcpy(str,str9);
break;
case 10:
strcpy(str,str10);
break;
case 11:
strcpy(str,str11);
break;
case 12:
strcpy(str,str12);
break;
case 13:
strcpy(str,str13);
break;
case 14:
strcpy(str,str14);
break;
case 15:
strcpy(str,str15);
break;
case 16:
strcpy(str,str16);
break;
case 17:
strcpy(str,str17);
break;
case 18:
strcpy(str,str18);
break;
case 19:
strcpy(str,str19);
break;
case 20:
strcpy(str,str20);
break;
}
/*Burada bilgisayar tarafindan otomatik olarak atanan stringin uzunlugu hesaplaniyor.*/
size_of_str=size(str);
r=size_of_str;
/*Burada '_' lerle dolu ilk string olusturuluyor.*/
for(k=0; k<size_of_str; ++k)
{
str0[k]='-';
}
/*Burada bilgisayaryn sectigi stringin uzunlugunun bir fazlasi kadar kullaniciya tahmin hakki veriliyor.*/
for(i=0; i<size_of_str; ++i)
{
t=size_of_str - i;  //Kalan tahmin hakki hesaplaniyor.
printf("Kelime %d harfli.",r);
printf("\n%d hakkiniz kaldi.",t);
printf("\nBir tahminde bulununuz.     Yanlis soyledigin harfler:\n %53s\n",str_yanlis);
printf("%s\n",str0);
lengthStrYanlis = strlen(str_yanlis);
lengthStrDogru = strlen(str_dogru);
if(lengthStrYanlis > lengthStrDogru)
lengthStrYanlisDogru = lengthStrYanlis;
else
lengthStrYanlisDogru = lengthStrDogru;
scanf(" %c",&predict); //Kullanicidan harf tahmini aliniyor.
q=0;
while(q < lengthStrYanlisDogru)
{
if(predict == str_yanlis[q] || predict == str_dogru[q])
{
printf("Bu harfi zaten soylemistiniz.\n");
scanf(" %c",&predict); //Kullanicidan harf tahmini aliniyor.
q=-1;
}
++q;
}
/*Burada kullanicinin harf tahmini bilgisayarin sectigi stringin her bir harfiyle karsilastiriliyor.
Kullanicinin tahmininin dogru oldugu bolumler aciliyor.*/
for(j=0; j<size_of_str; ++j)
{
if(str[j]==predict)
{
c +=1;
str0[j]=str[j];
str_dogru[x] = predict;
x +=1;
}
}
if(c != 0)
size_of_str +=1;
/*Eger kullanicinin yaptigi harf tahmini bilgisayarin sectigi stringin icerisinde yoksa
o harfler str_yanlis stringine ataniyor.*/
if(c==0)
{
str_yanlis[m]=predict;
++m;
}
c=0;
printf("%s",str0);
/*Bu bolumde bilgisayarin sectigi stringle kullanicinin tahmin etmekte oldugu string karsilastiriliyor.
Eger esit cikarsa kullanici butun '_' leri acmis,stringi dogru tahmin etmis demektir.*/
z=strcmp(str,str0);
if(z==0)
{
printf("\n\n\n           KAZANDINIZ.");
break;
}
/*Bu bolumde bilgisayarin sectigi stringle kullanicinin tahmin etmekte oldugu string karsilastiriliyor.
Eger esit degilse kullanici butun '_' leri acamamis,stringi dogru tahmin edememis demektir.*/
//VE OYUN BYTER.
if(t==1 && strcmp(str0,str)!=0 )
{
printf("\n\n\n           KAYBETTIN SENDEN BI CACIK OLMAZ.");
break;
}
system("cls");
}
getch();
return (0);
}
int size(char array[])
{
int l=0;
while(array[l]!='\0')
++l;
return l;
}

22 Temmuz 2013 Pazartesi

Fiyat/Kdv/Iskonto Hesabı Yapan C programı

#include <stdio.h>

#include <stdlib.h>

main ()

{

float fiyat,kdvoran,iskonto,toplam;

// Tanımlamada float kullandık çünkü fiyat küsüratlı olabilir.

printf("\t**Toplam Fiyat Hesaplama**\n\n");

// '\n'ye benzeyen '\t' bir tab alan boşluk bırak alamına gelir.

printf("\t###############################\n\n");

/* ş karakteri Türkçe olduğundan ekranda kare simgesi yapar.

Buda ekran kodundaki güzel görüntü için işinize yarayacaktır ;) */

printf("\tUrun Fiyatini Giriniz : ");

scanf("%f",&fiyat);

/*Scanf ile urun fiyatini "fiyat"a tanımladık.*/

printf("\n");

printf("\tIskonto oranini giriniz : ");

scanf("%f",&iskonto);

printf("\n");

printf("\tKDV oranini giriniz : ");

scanf("%f",&kdvoran);

printf("\n");

printf("\t###############################\n\n");

printf("\tUrun Fiyati      : %.2f\n", fiyat);

printf("\tIskonto Orani    : Yuzde %.2f\n", iskonto);

printf("\tIskonto Turari   : %.2f\n", fiyat/100*iskonto);

printf("\tIskontolu Tutar  : %.2f\n", fiyat-(fiyat/100*iskonto));

printf("\tKDV Orani        : Yuzde %.2f\n", kdvoran);

printf("\tKDV Tutari       : %.2f\n", (fiyat-(fiyat/100*iskonto))/100*kdvoran);

printf("\n");

printf("\t###############################\n\n");

toplam=fiyat-(fiyat/100*iskonto)+((fiyat-(fiyat/100*iskonto))/100*kdvoran);

//Karışık gibi ama sadece matamatik.

printf("\tToplam Fiyat     : %.2f\n\n\a",toplam);

printf("\t###############################\n\n");

system("pause");

}

21 Temmuz 2013 Pazar

Swicth case Test

C programming technical questio Swicth case Test ns and answers with explanation


Technical c interview questions


1.
What will be output when you will execute following c code?
#include<stdio.h>
void main(){
     int check=2;
     switch(check){
        case 1: printf("D.W.Steyn");
        case 2: printf(" M.G.Johnson");
        case 3: printf(" Mohammad Asif");
        default: printf(" M.Muralidaran");
     }
}

Choose all that apply:

(A)M.G.Johnson
(B)M.Muralidaran
(C)
M.G.Johnson Mohammad Asif M.Muralidaran
(D)Compilation error
(E)None of the above


Explanation:

If we will not use break keyword in each case the program control will come in each case after the case witch satisfy the switch condition.

2.
What will be output when you will execute following c code?
#include<stdio.h>
void main(){
     int movie=1;
     switch(movie<<2+movie){
        default:printf("3 Idiots");
        case 4: printf(" Ghajini");
        case 5: printf(" Krrish");
        case 8: printf(" Race");
     } 
}

Choose all that apply:
(A)3 Idiots Ghajini Krrish Race
(B)Race
(C)Krrish
(D)Ghajini Krrish Race
(E)Compilation error


Explanation:

We can write case statement in any order including the default case. That default case may be first case, last case or in between the any case in the switch case statement.

3.
What will be output when you will execute following c code?
#include<stdio.h>
#define L 10
void main(){
     auto money=10;
     switch(money,money*2){
        case L:  printf("Willian");
                  break;
        case L*2:printf("Warren");
                  break;
        case L*3:printf("Carlos");
                  break;
        default: printf("Lawrence");
        case L*4:printf("Inqvar");
                  break;
     }  
}

Choose all that apply:

(A)Willian
(B)Warren
(C)Lawrence Inqvar
(D)Compilation error: Misplaced default
(E)None of the above


Explanation:

In c comma is also operator which enjoy least precedence. So if
x = (a , b);
Then x = b
Note: Case expression can be macro constant.

4.
What will be output when you will execute following c code?
#include<stdio.h>
void main(){
     int const X=0;
     switch(5/4/3){
        case X:  printf("Clinton");
                  break;
        case X+1:printf("Gandhi");
                  break;
        case X+2:printf("Gates");
                  break;
        default: printf("Brown");
     } 
}

Choose all that apply:

(A)Clinton
(B)Gandhi
(C)Gates
(D)Brown
(E)Compilation error


Explanation:

Case expression cannot be constant variable.

5.
What will be output when you will execute following c code?
#include<stdio.h>
enum actor{
    SeanPenn=5,
    AlPacino=-2,
    GaryOldman,
    EdNorton
};
void main(){
     enum actor a=0;
     switch(a){
        case SeanPenn:  printf("Kevin Spacey");
                         break;
        case AlPacino:  printf("Paul Giamatti");
                         break;
        case GaryOldman:printf("Donald Shuterland");
                         break;
        case EdNorton:  printf("Johnny Depp");
     }  
}

Choose all that apply:

(A)Kevin Spacey
(B)Paul Giamatti
(C)Donald Shuterland
(D)Johnny Depp
(E)Compilation error


Explanation:

Default value of enum constant 
GaryOldman = -2 +1 = -1
And default value of enum constant 
EdNorton = -1 + 1 = 0
Note: Case expression can be enum constant.

6.
What will be output when you will execute following c code?
#include<stdio.h>
void main(){
     switch(*(1+"AB" "CD"+1)){
        case 'A':printf("Pulp Fiction");
                  break;
        case 'B':printf("12 Angry Man");
                  break;
        case 'C':printf("Casabance");
                  break;
        case 'D':printf("Blood Diamond");
     }
    
}

Choose all that apply:

(A)Pulp Fiction
(B)12 Angry Man
(C)Casabance
(D)Blood Diamond
(E)Compilation error


Explanation:

Consider on the expression:
*(1+"AB" "CD"+1)
= *(2+"AB" "CD")
= *(2+"ABCD")
=*("CD")
='C'

Note: Case expression can be character constant.

7.
What will be output when you will execute following c code?
#include<stdio.h>
void main(){
    char *str="ONE"
    str++;
    switch(str){
        case "ONE":printf("Brazil");
                break;
        case "NE": printf("Toy story");
                break;
        case "N":  printf("His Girl Friday");
                break;
        case "E":  printf("Casino Royale");
     }  
}

Choose all that apply:

(A)Brazil
(B)Toy story
(C)His Girl Friday
(D)Casino Royale
(E)Compilation error


Explanation:

Case expression cannot be string constant.

8.
What will be output when you will execute following c code?
#include<stdio.h>
void main(){
    switch(5||2|1){
        case 3&2:printf("Anatomy of a Murder");
              break;
        case -~11:printf("Planet of Apes");
               break;
        case 6-3<<2:printf("The conversation");
               break;
    case 5>=5:printf("Shaun of the Dead");
     } 
}

Choose all that apply:

(A)Anatomy of a Murder
(B)Planet of Apes
(C)The conversation
(D)Shaun of the Dead
(E)Compilation error


Explanation:

Consider on the expression:
5||2|1
=5|| (2|1)  //Bitwise or has higher precedence
=5||3
=1

Now, value of each case expression:
3&2 = 2
-~11 = -(-12) =12
6-3<<2 = 3 <<2 = 12
5>=5 = 1

case -~11 and case 6-3<<2 have same constant expression i.e. case 12
In c duplicate case is not possible.

9.
What will be output when you will execute following c code?
#include<stdio.h>
void main(){
    switch(6){
        case 6.0f:printf("Sangakkara");
               break;
        case 6.0: printf("Sehwag");
               break;
        case 6.0L:printf("Steyn");
               break;
        default:  printf("Smith");
    } 
}

Choose all that apply:

(A)Sangakkara
(B)Sehwag
(C)Steyn
(D)Smith
(E)Compilation error


Explanation:

Case expression must be integral constant expression. If it is not integer then it is automatically type casted into integer value.
so. (int)6.0f = 6
(int)6.0 = 6
(int)6.0L = 6
In c duplicate case is not possible.

10.
What will be output when you will execute following c code?

#include<stdio.h>
void main(){
    switch(0X0){
        case NULL:printf("Thierry Henry");
             break;
        case '\0':printf("Steven Gerrend");
             break;
        case 0: printf("Kaka");
             break;
        default: printf("Michael Ballack");
    }
    
}

Choose all that apply:

(A)Thierry Henry
(B)Steven Gerrend
(C)Kaka
(D)Michael Ballack
(E)Compilation error


Explanation:

Macro constant NULL has be defined as 0 in stdio.h
ASCII value of character constant '\0' is 0
As we duplicate case is not possible in c.

11.
What will be output when you will execute following c code?

#include<stdio.h>
void main(){
     switch(5/2*6+3.0){
        case 3:printf("David Beckham");
             break;
        case 15:printf("Ronaldinho");
             break;
        case 0:printf("Lionel Messi");
             break;
        default:printf("Ronaldo");
     }  
}
Choose all that apply:

(A)David Beckham
(B)Ronaldinho
(C)Lionel Messi
(D)Ronaldo
(E)Compilation error


Explanation:

Consider on the expression:
5/2*6+3.0
=2*6+3.0
=12 + 3.0
=15.0

In c switch expression must return an integer value. It cannot be float, double or long double

12.
What will be output when you will execute following c code?

#include<stdio.h>
void main(){
    unsigned char c=280;
    switch(c){
        printf("Start\t");
        case 280:printf("David Beckham\t");
        case 24: printf("Ronaldinho\t");
        default:  printf("Ronaldo\t");
        printf("End");
    }
    
}
Choose all that apply:
(A)
Start David Beckham Ronaldinho Ronaldo End
(B)Start David Beckham Ronaldinho Ronaldo
(C)Start Ronaldinho Ronaldo End
(D)
Ronaldinho Ronaldo End
(E)Compilation error


Explanation:

280 is beyond the range of unsigned char. Its corresponding cyclic value is: 24
In c switch case statement program control always move from the case which satisfy the switch condition and end with either break keyword, terminating} or any null character which will come first.

13.
What will be output when you will execute following c code?

#include<stdio.h>
#define TRUE 1
void main(){
    switch(TRUE){
        printf("cquestionbank.blogspot.com");
     }  
}

Choose all that apply:

(A)cquestionbank.blogspot.com
(B)It will print nothing
(C)Runtime error
(D)Compilation error
(E)None of the above



Explanation:

In c it is possible a switch case statement without any case but it is meaning less.

14.
What will be output when you will execute following c code?

#include<stdio.h>
void main(){
     static int i;
     int j=1;
     int arr[5]={1,2,3,4};
     switch(arr[j]){
        case 1: i++;break;
        case 2: i+=2;j=3;continue;
        case 3: i%=2;j=4;continue;
        default: --i;
     }
     printf("%d",i);  
}

Choose all that apply:

(A)0
(B)1
(C)2
(D)Compilation error
(E)None of the above


Explanation:

We cannot use continue keyword in switch case. It is part loop.

15.
What will be output when you will execute following c code?

#include<stdio.h>
void main(){
     static int i;
     int j;
     for(j=0;j<=5;j+=2)
     switch(j){
        case 1: i++;break;
        case 2: i+=2;
        case 4: i%=2;j=-1;continue;
        default: --i;continue;
     }
     printf("%d",i); 
}

Choose all that apply:

(A)0
(B)1
(C)2
(D)
Compilation error
(E)None of the above


Explanation:

In first iteration of for loop:
j = 0
So, control will come to default,
i = -1
Due to continue keyword program control will move to beginning of for loop
In second iteration of for loop:
j =2
So, control will come to case 2,
i+=2
i = i+2 = -1 +2 =1
Then come to case 4,
i%=2
i = i%2 = 1%2 = 1
j= -1
Due to continue keyword program control will move to beginning of for loop
In third iteration of for loop:
j = -1 +2 =1
So, control will come to case 1
i = 2
In the fourth iteration of for loop:
j = 1+ 2 =3
So, control will come to default,
so i = 1
In the fifth iteration of for loop:
j = 3 + 2 =5
So, control will come to default,
so i = 0
In the sixth iteration of for loop:
j = 5 + 2 =7
Since loop condition is false. So control will come out of the for loop. 

16.
What will be output when you will execute following c code?

#include<stdio.h>
void main(){
     int x=3;
     while(1){
        switch(x){
             case 5/2: x+=x+++x;
             case 3%4: x+=x---x;continue;
             case 3>=3: x+=!!!x;break;
             case 5&&0:x+=~~~x;continue;
             default: x+=-x--;
        }
        break;
     }
     printf("%d",x);   
}

Choose all that apply:

(A)3
(B)-1
(C)5
(D)Compilation error
(E)None of the above


Explanation:

Think yourself.

17.
What will be output when you will execute following c code?

#include<stdio.h>
void main(){
     char *str="cquestionbank.blogspot.com";
     int a=2;
     switch('A'){
        case 97:
             switch(97){
                 default: str+=1;
             }
        case 65:
             switch(97){
                 case 'A':str+=2;
                     case 'a':str+=4;
         }
        default:
         for(;a;a--)
             str+=8;
     }
     printf("%s",str); 
}

Choose all that apply:
(A)
cquestionbank.blogspot.com
(B)blogspot.com
(C)com
(D)
Compilation error
(E)None of the above


Explanation:

ASCII value of the character constant 'A' is 65 and 'a' is 97
Nesting of switch case is possible in c.

18.
What will be output when you will execute following c code?

#include<stdio.h>
void main(){
     switch(2){
        case 1L:printf("No");
        case 2L:printf("%s","I");
             goto Love;
        case 3L:printf("Please");
        case 4L:Love:printf("Hi");
     } 
}

Choose all that apply:

(A)I
(B)IPleaseHi
(C)IHi
(D)Compilation error
(E)None of the above


Explanation:

It is possible to write label of goto statement in the case of switch case statement.

19.
What will be output when you will execute following c code?

#include<stdio.h>
void main(){
     int a=5;
     a=a>=4;
     switch(2){
        case 0:int a=8;
        case 1:int a=10;
        case 2:++a;
        case 3:printf("%d",a);
     }
}
Choose all that apply:

(A)8
(B)11
(C)10
(D)Compilation error
(E)None of the above


Explanation:

We can not declare any variable in any case of switch case statement.

20.
What will be output when you will execute following c code?

#include<stdio.h>
void main(){
     int a=3,b=2;
     a=a==b==0;
     switch(1){
        a=a+10;
     }
     sizeof(a++);
     printf("%d",a); 
}

Choose all that apply:

(A)10
(B)11
(C)
12
(D)
1
(E)Compilation error


Explanation:

Consider on the expression:
a=a==b==0;
a=(a==b)==0; //Since associate is right to left
a =(3==2)==0
a=0==0
a=1

switch case will not affect the value of variable a.
Also sizeof operator doesn't affect the value of the any variable



If you have any  query or need more explanation in above technical questions on c language