Menü ve Fonksiyonla Matematiksel İşlem [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] Bu programda switch yapısını, while döngüsü ve fonksiyonları kullandık. Menü seçenekleriyle toplama, çarpma, ebob, ekok ve yer değiştirme işlemlerinden biri seçilip işlem sonuçları fonksiyonlar kullanılarak ekrana yazdırılıyor.
Kod:
#include<stdio.h>
#include<conio.h>
int topla(int,int,int); // bu satırda fonksiyonun prototipi verilmiştir
// eger fonksiyonların prototipi main fonksiyonundan önce verilmezse fonsiyonun cagırıldıgı satıra gelindiginde
// derleyici fonksiyonu tanıyamaz.
// main den önce fonksiyonun prototipi verilmek yerine direk te tanımlanabilir.
int carp(int,int,int);
int ekok(int,int,int);
int ebob(int,int,int);
void yer_deg(int*,int*,int*);
int main()
{
int sayi1,sayi2,sayi3;
char tur;
do
{ do{
printf("\t\tİSLEM SECENEKLERİ\n\n\n\n");
printf(" a)toplama islemi\n");
printf(" b)carpma islemi\n");
printf(" c)sayilarin ebobu\n");
printf(" d)sayilarin ekoku\n");
printf(" e)sayilarin yer degistirmesi\n");
printf(" f)cikis\n\t\t\t");
fflush(stdin);
scanf("%c",&tur);
if(tur=='f')
return 0; // kullanıcı f tusladıgında program return yazısını görür ve sonlanır
}while(tur!='a'&&tur!='b'&&tur!='c'&&tur!='d'&&tur!='e');
printf(" uc sayi girmeniz gerekmektedir.\n");
printf(" birinci sayi :");
scanf("%d",&sayi1);
printf("\n");
printf(" ikinci sayi :");
scanf("%d",&sayi2);
printf("\n");
printf(" ucuncu sayi :");
scanf("%d",&sayi3);
printf("\n\t\t\tcevap:");
switch(tur)
{
case 'a': case 'A':
{
printf("%d",topla(sayi1,sayi2,sayi3)); // fonksiyon cagırılır islem yapıldıktan sonra sonuc yazdırılır
break;
}
case 'b': case 'B':
{
printf("%d",carp(sayi1,sayi2,sayi3)); // fonksiyon cagırılır islem yapıldıktan sonra sonuc yazdırılır
break;
}
case 'c': case 'C':
{
printf("%d",ebob(sayi1,sayi2,sayi3)); // fonksiyon cagırılır islem yapıldıktan sonra sonuc yazdırılır
break;
}
case 'd': case 'D':
{
printf("%d",ekok(sayi1,sayi2,sayi3)); // fonksiyon cagırılır islem yapıldıktan sonra sonuc yazdırılır
break;
}
case 'e': case'E':
{
yer_deg(&sayi1,&sayi2,&sayi3); // fonksiyon cagırılır islem yapıldıktan sonra sonuc yazdırılır
printf("\n birinci sayi :%d\n\n",sayi1); // sayıların bırer kaydırılmıs halı yazılır
printf(" ikinci sayi :%d\n\n",sayi2);
printf(" ucuncu sayi :%d\n\n",sayi3);
break;
}
}
printf("\n\n");
}
while(1); // sonsuz döngü içinde sonlandırmak için if yapısı kullanıldı
}
int topla(int a,int b,int c)
{
return a+b+c; // yukarıda fonksiyon ismi ve parametreleri okundugunda buraya gönderilir ve islem yapılır
} // aynısı diger fonksiyonlar içnde gecerlidir
int carp(int a,int b,int c)
{
return a*b*c;
}
int ebob(int a,int b,int c)
{
int bolunen,bolum,kalan,x,ebob1;
if(a<b)
{
x=a;
a=b;
b=x;
}
bolunen=a;// ilk önce ilk iki sayinin ebobu alınır sonra bulunan ebobla ücüncü sayının ebobu alınır
bolum=b;
kalan=bolunen%bolum;
while(kalan!=0)
{
bolunen=bolum;
bolum=kalan;
kalan=bolunen%bolum;
}
ebob1=bolum;
if(ebob1<c)
{
x=ebob1;
ebob1=c;
c=x;
}
bolunen=ebob1;
bolum=c;
kalan=bolunen%bolum;
while(kalan!=0)
{
bolunen=bolum;
bolum=kalan;
kalan=bolunen%bolum;
}
return bolum;
}
int ekok(int a,int b,int c)
{
return a*b*c/ebob( a, b, c);
}
void yer_deg(int *a,int *b,int *c) // yer degistirme işlemlerinde degerlerin adresleriyle islem yapılır
// islemler degerlerin adresleri tutularak gerceklesir ki
// sonradan bulunan sonuclar eski degerlerin üzerine yazdırılsın.
// aksi taktirde yapılan islemler sonucunda bulunan degerler fonksiyon kapandıgında sona erer
//diger islemlerde yeni sonuc elde edildigi için ve main fonksiyonu içindeki ana tabiri degiştirmeye gerek
//duyulmadıgı için degişkenlerin önüne * konulması gerekmez.(referansla cagırmaya gerek duyulmaz.)
{
int x;
x=*a; // bir değişkenin yerine diğerini atamadan önce o değişken baska bir yerde saklanır ki kaybolmasın.
// x yerel değişkendir main fonksiyonunda kullanılmadığı için önüne * konulması gerekmez
*a=*b;
*b=*c;
*c=x;
}
|