Kod: Kodu kopyalamak için üzerine çift tıklayın!
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<windows.h>
void git(int x,int y)//istediğimiz koordinata gitmemizi sağlayan fonksiyon.
{
COORD koord;
koord.X = x;
koord.Y = y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), koord);
}
void normal()//butonların ilk halini çizdiren fonksiyon
{
int i,j,k,a=4,b=1;//ilk çizimi a ve 5 (4,1) koordinatıyla başlatır.
int tek=1;
for(k=1;k<=5;k++)//5 tane buton çizmeye yarar.
{
tek=1; //3 satir ucgenin her satirindaki yıldız sayısı.(asagida 2 şer artıracağız.) xxxxxxxxxxx
b=1;
for(i=1;i<=3;i++)//ücgenin satır sayısı
{
for(j=1;j<=tek;j++)//üçgeni çiz
{
if(j==1)//j döngüne girince j=1 iken..
git(a,b);//.. ucgenın cizimin baslangıc noktasına git
if(tek==1)//geçenki programda üstte kalan tek yıldızı sildim daha güzel bir görüntü ortaya çıktı.
printf(" ");
else
printf("*");//tek sayısı kadar yıldızı yazdır.
}
a--;//burada a'yı azaltıp b'yi artırdıkça ucgen cızıminin baslanngıc noktası ..
b++;//..değişip (4,1) (3,2) (2,3)... şeklinde olacaktır.
tek+=2;//teki artıracagımızı yukarıdaki xxxx le işaretli satırda söylemiştim.
}
a++;
git(a,b);
printf("* *");//butonun alt kısmını çizdirdik.
b++;
git(a,b);
for(i=1;i<=5;i++)//butonun tabanını çizdirdik.
printf("*");
a+=11;//programın diğer butonlara geçiş mantığı burada a sayısını kaç artırdığımıza bağlıdır..
} //su an degeri 2 iken en son degerine 11 ekledık..
//sonuc olarak diğer butonları geçişte kullanacağımız sayı 11-2 sonucundan 9 olur..
//bunu anti fonksıyonunda daha net göreceğiz.
}
void anti(int,float,float);//anti fonksiyonunu aşağıda inceleyelim.
main()
{
int sayi,x,y,kontrol=0;
while(1)//Sonsuz döngü
{
if(kontrol==0)
{
git(0,20);//rastgele aşağıda bir satıra..
printf("1.sayi : ");//..bunu yazdır.
scanf("%d",&x);
printf("2.sayi : ");//..bunu yazdır.
scanf("%d",&y);
printf("\n1 2 3 4 5 tuslariyla islemleri seciniz.");
kontrol++;
}
normal();//butonların ilk halini çiz..
printf("\n\n + - * / %%");
anti(sayi,x,y);//kaç numaralı butona basacağımızı belirler.
Sleep(150);//bu komut programı bekleterek butona basıp çekme efekti sağlar.
}
}
void anti(int deger,float c,float d)//anti fonksiyonu ekrandaki butonu siler,yerine basılmış haldeki butonu çizer.
{
int i,j,k,a,b;
deger=getch();//tuşa bastığımız anda o tuşun ascii kodunu alarak entera basmadan işlem yapar.
if(deger==49)//1'in ascii kodu
{
a=2;
b=1;
git(a,b);
for(i=2;i<=6;i++) //(2,1),(3,1),(4,1),(5,1),(6,1)
{ //(2,2),(3,2),(4,2),(5,2),(6,2)
for(j=1;j<=5;j++) //(2,3),(3,3),(4,3),(5,3),(6,3)
{ //(2,4),(3,4),(4,4),(5,4),(6,4)
git(i,j); //(2,5),(3,5),(4,5),(5,5),(6,5)
printf(" ");
} //koordinatlarına bosluk degeri atıp yok ediyoruz.
}
for(i=3;i<=5;i++)
{
git(2,i);
for(j=1;j<=5;j++)
printf("*");
}
for(i=0;i<=79;i++)//tüm satirin degerlerini silmemizi saglar.yoksa tüm değerler beraber gösterilir.
{
git(i,9);
printf(" ");
}
git(3,9);
printf("%.f",c+d);
}
if(deger==50) //Hatırlarsanız normal fonksiyonunun içinde 9 sayısından bahsetmiştim..
{ //deger==49 un içindeki koordinat değerlerini artırmak diğer butonlara..
a=11; //geçişi sağlar.Aynı şeyler asağıdaki butonlar için de geçerlidir.
b=1;
git(a,b);
for(i=11;i<=15;i++)//az önce 2 olan değer şimdi 11,tıpkı 6'nın 15 olması gibi.
{
for(j=1;j<=5;j++)
{
git(i,j);
printf(" ");
}
}
for(i=3;i<=5;i++)
{
git(11,i);//burada da arttığını görüyoruz.
for(j=1;j<=5;j++)
printf("*");
}
for(i=0;i<=79;i++)
{
git(i,9);
printf(" ");
}
git(13,9);
printf("%.f",c-d);
}
if(deger==51)
{
a=20;
b=1;
git(a,b);
for(i=20;i<=24;i++)
{
for(j=1;j<=5;j++)
{
git(i,j);
printf(" ");
}
}
for(i=3;i<=5;i++)
{
git(20,i);
for(j=1;j<=5;j++)
printf("*");
}
for(i=0;i<=79;i++)
{
git(i,9);
printf(" ");
}
git(21,9);
printf("%.f",c*d);
}
if(deger==52)
{
a=29;
b=1;
git(a,b);
for(i=29;i<=33;i++)
{
for(j=1;j<=5;j++)
{
git(i,j);
printf(" ");
}
}
for(i=3;i<=5;i++)
{
git(29,i);
for(j=1;j<=5;j++)
printf("*");
}
for(i=0;i<=79;i++)
{
git(i,9);
printf(" ");
}
git(31,9);
printf("%.2f",c/d);
}
if(deger==53)
{
a=38;
b=1;
git(a,b);
for(i=38;i<=42;i++)
{
for(j=1;j<=5;j++)
{
git(i,j);
printf(" ");
}
}
for(i=3;i<=5;i++)
{
git(38,i);
for(j=1;j<=5;j++)
printf("*");
}
for(i=0;i<=79;i++)
{
git(i,9);
printf(" ");
}
int s,r;
s=c; //int değerine çevirip modunu alalım yoksa mod float değerinde hata verir.
r=d;
git(40,9);
printf("%d",s%r);
}
}