Programlama Rehberi

janadıl sordu
nerde hata yapıyorum

 

hesap makinesi yapmaya çalışıyorum ama beceremedim. fonfsiyonları yeni öğreniyorum. yardımcı olursanız sevinirim.Nerde hata yapıyorum??

#

float sayi1,sayi2;

double sonuc;

int secim;

void getsecim(void)

{

printf("*****************\n");

printf("* MENU\t*\n");

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

printf("* 1.TOPLA\t*\n");

printf("* 2.CIKAR\t*\n");

printf("* 3.CARP\t*\n");

printf("* 4.BOL\t*\n");

printf("* 5.CIKIS\t*\n");

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

printf("*****************\n\n");

printf("seciminizi yapınız");

scanf("%d",&secim);

if(secim==5){

printf("cıktınız güle güle");

}

while ((secim<1)||(secim>5))

{

printf("yanlıs değer girdiniz yeni değer giriniz");

scanf("%d",&secim);

}

return;

}

float hesapla(float sayi1,float sayi2,int secim)

{

printf("iki sayi gir");

scanf("%f %f",&sayi1,&sayi2);

switch(secim)

{

case 1: topla(sayi1,sayi2);break;

case 2:cikar(sayi1,sayi2);break;

case 3: carp(sayi1,sayi2);break;

case 4:bol(sayi1,sayi2); break;

include<stdio.h>

}

return 0;

}

 

double topla(float sayi1,float sayi2)

{

sonuc=(sayi1+sayi2);

return sonuc;

}

 

double cikar(float sayi1,float sayi2)

{

sonuc=(sayi1-sayi2);

return sonuc;

}

 

double carp(float sayi1,float sayi2)

{

sonuc=(sayi1*sayi2);

return sonuc;

}

 

double bol(float sayi1,float sayi2)

{

sonuc=(sayi1/sayi2);

return sonuc;

}

 

void sonucbas(float sayi1,float sayi2,float sonuc)

{

printf("%f ile %fnin islem sonucu =%f",sayi1,sayi2,sonuc);

}

void main(void)

{

getsecim();

hesapla(secim,sayi1,sayi2);

sonucbas(sayi1,sayi2,sonuc);

return;



Yazılan cevap: 1
Eklenme tarihi: 2008-11-30
Okunma sayısı: 341
Kategori: C

Cevaplar(1)

Merhaba,

Bazı mantık hataların var. Tüm programda global degişkenler kullanmışsın buna rağmen fonksiyonlara parametre iletme gereksinimi duymuşsun. Global değişken tanımlıyorsan bunu fonksiyona parametre olacak iletmene gerek yok. Zaten global olduğundan dolayı programın her bölümünden ulaşabilirsin. Bir de hesapla fonksiyonunu topla, cikar ... fonksiyonlarından sonra tanımlamalısın yoksa o fonksiyonları kullanamazsın. Aşağıda programının çalışan versiyonunu bulabilirsin.

#include<stdio.h>

float sayi1,sayi2;
double sonuc;
int secim;

void getsecim(void)
{
    printf("*****************\n");
    printf("* MENU\t*\n");
    printf("*\t \t*\n");
    printf("* 1.TOPLA\t*\n");
    printf("* 2.CIKAR\t*\n");
    printf("* 3.CARP\t*\n");
    printf("* 4.BOL\t*\n");
    printf("* 5.CIKIS\t*\n");
    printf("*\t \t*\n");
    printf("*****************\n\n");
    printf("seciminizi yapynyz");
   
    scanf("%d",&secim);
   
    if(secim==5){
        printf("cyktynyz güle güle");
    }
   
    while ((secim<1)||(secim>5))
    {
        printf("yanlys de?er girdiniz yeni de?er giriniz");
        scanf("%d",&secim);
    }
    return;
}

void topla()
{
    sonuc=sayi1+sayi2;
}

void cikar()
{
    sonuc=sayi1-sayi2;
}

void carp()
{
    sonuc=sayi1*sayi2;
}

void bol()
{
    sonuc=sayi1/sayi2;
}

void sonucbas()
{
    printf("%f ile %fnin islem sonucu = %f",sayi1,sayi2,sonuc);
}

float hesapla()
{
    printf("iki sayi gir");
    scanf("%f %f",&sayi1,&sayi2);
   
    switch(secim)
    {
        case 1:topla();break;
        case 2:cikar();break;
        case 3:carp();break;
        case 4:bol(); break;
    }
    return 0;
}
int main(void)
{
    getsecim();
    hesapla();
    sonucbas();
    return 0;
}

Yazan: Hamdi / Ort. puan: 0 /
Cevabı değerlendir:


2004-2009 © Programlama Rehberi, tüm hakları saklıdır.