Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
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: Kodu kopyalamak için üzerine çift tıklayın!
#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;
}