C de Yeniyim. Hesap Makinesi

Kodla Büyü

namikc

Seçkin Üye
Seçkin Üye
Mesajlar
478
#include<stdio.h>
int main()
{
int a,b,sonuc;
char islem;
printf("BASIT HESAP MAKINESI\n");
printf("<><>>>>>>>>>><><><><>\n");
printf("bir sayi daha giriniz\n"); scanf("%d",&a);
printf("bir sayi giriniz\n"); scanf("%d",&b);
printf("Yapilacak islemi giriniz "); scanf("%c",&islem);
if (islem='+') sonuc=a+b ; printf("isleminizin sonucu = %d",sonuc);
else if (islem='-') sonuc=a-b ; printf("isleminizin sonucu = %d",sonuc);
else if (islem='/') sonuc=a/b ; printf("isleminizin sonucu = %d",sonuc);
else if (islem='*') sonuc=a*b ; printf("isleminizin sonucu = %d",sonuc);

}

Buradaki hatam nedir?
 
if şartlarından sonra == kullanmanız lazım, ikincisi şarttan sonra iki adet işlem yaptırdığınız için işlem bloğunu { } işaretleri içine almanız lazım diye hatırlıyorum.
 
sen iki blok kod yazdıgın için { } kullanman lazım, tek blok kullansaydın olurdu..

if (islem='+')
{
sonuc=a+b ;
printf("isleminizin sonucu = %d",sonuc);
}

şeklinde
 
#include<stdio.h>
int main()
{
int a,b,sonuc;
char islem;
printf("BASIT HESAP MAKINESI\n");
printf("<><>>>>>>>>>><><><><>\n");
printf("bir sayi daha giriniz\n"); scanf("%d",&a);
printf("bir sayi giriniz\n"); scanf("%d",&b);
printf("Yapilacak islemi giriniz "); scanf("%c",&islem);
if (islem=='+')
{sonuc=a+b ; printf("isleminizin sonucu = %d",sonuc); }
else if (islem=='-')
{sonuc=a-b ; printf("isleminizin sonucu = %d",sonuc);}
else if (islem=='/')
{sonuc=a/b ; printf("isleminizin sonucu = %d",sonuc);}
else if (islem=='*')
{sonuc=a*b ; printf("isleminizin sonucu = %d",sonuc);}


}


Böyle yaptım ama şimdi de yapılacak işlemi seçince kapanıyor.
 
Nette buldum


#include<stdio.h>

#include<math.h>

#include<conio.h>

int a,b;

float sonuc;

char islem;

int main()


{

printf(“1.Sayiyi Giriniz\n”);

scanf(“%d”,&a);

printf(“2.Sayiyi Giriniz\n”);

scanf(“%d”,&b);

printf(“Islem Giriniz(*,/,+,-)”);

scanf(“%s”,&islem);

switch(islem)

{

case ‘-’: sonuc=a-b;printf(“Sonuc=%.2f”,sonuc);break;

case ‘+’: sonuc=a+b;printf(“Sonuc=%.2f”,sonuc);break;

case ‘*’: sonuc=a*b;printf(“Sonuc=%.2f”,sonuc);break;

case ‘/’: sonuc=a/b;printf(“Sonuc=%.2f”,sonuc);break;

default : printf(“Girdiginiz Islem Yanlis”);break;

}

getch();

return 0;

}
 
printf("Yapilacak islemi giriniz "); scanf("%c",&islem); satırındaki %c kısmını %s olarak dener misin hocam. Birde en sona else bloğu koysan daha mantıklı. else bloğunda ekrana yanlış bir işlem seçtiniz mesajı verdirirsen belki de hata buradadır, girdiğin işlem operatörünü kabul etmiyordur.
 
yanlışlık yok bence, sadece program en sonda sonlanıyor, işlem hızlı gerçekleştiğinden göremiyor
 
namikc' Alıntı:
Ben daha case switch bunlara gelmedim :) Ben bildiklerimle yapamaz mıyım?

Yapılır hocam yapılmasına ama C++ ekranında programı çalıştırdığında siyah ekranda sonucu görebilmesin için yukarda bir hocam yazmış getch(); ya da getche(); komutu kullanmalısın, %c kısmını %s olarak değiştir ve else {printf ile buraya doğru bir seçim yapınız mesajı yazdır} burayı da ekle hocam programına öyle bakalım.
 
Son düzenlemeleri yapınca bu çıktı...
 

Ekli dosyalar

  • Adsız.png
    Adsız.png
    177.4 KB · Görüntüleme: 1,535
tekrar eskisine çevir
scanf char ile kullaırken başına boşluk bırak

scanf(" %c",&islem);

ya da char islem[10] şeklinde yap

bir de böyle dene

else blogunu ya sil ya da printf ile yaz
 
mclaren' Alıntı:
namikc' Alıntı:
furkan35' Alıntı:
bölme işleminde hata vermez mi?float sonuc diye olmalı bence...

Hata vermedi. Çok basamaklı denemedim.

Çok basamağa gerek yok hocam, 3 ü 2 ye bile bölsen hata vermesi lazım.

scanf(" %c",&islem);
Hocam %nin önünden boşluğu kaldırınca çalışmıyor. Nedeni ne olabilir?
 
hocam printf("Yapilacak islemi giriniz "); scanf("%s",&islem); satırında ben %c yerine %s kullanıyorum, boşluğu kaldırınca çalışıyor.
 

Ekli dosyalar

  • resim.jpg
    resim.jpg
    110.1 KB · Görüntüleme: 1,142
Geri
Üst