Çözüldü Hesap makinesi kodu hata veriyor

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

mehmet_emin_dgn

Decapat
Katılım
17 Temmuz 2021
Mesajlar
19
Daha fazla  
Cinsiyet
Erkek
Hesap makinesi yapmaya çalışıyordum ama nedense kod hata veriyor hatayı da anlamadım, nasıl düzelteceğimi yardım eder misiniz? Kodu ve hatayı aşağıya yazıyorum.

C:
#include <stdio.h>

int main(void) {
 int say1;
 int islem;
 int say2;
 int sonuc;

 printf("islemi giriniz. Toplama için 1'e, çıkarma için 2'ye, çarpma için 3'e, bölme için 4'e basınız.\n");
 scanf("%d", &islem);

 if(islem==1)
 {
 printf("ilk sayıyı giriniz.\n(ÖRN:16)\n");
 scanf("%d", &say1);
 printf("ikinci sayıyı giriniz.\n(ÖRN:93)\n");
 scanf("%d", &say2);

 printf("%d",say1 + say2);
 }

 else if(islem==2);
 {
 printf("ilk sayıyı giriniz.\n(ÖRN:16)\n");
 scanf("%d", &say1);
 printf("ikinci sayıyı giriniz.\n(ÖRN:93)\n");
 scanf("%d", &say2);

 printf("%d",say1 - say2);
 }

 else(islem==3)
 {
 printf("ilk sayıyı giriniz.\n(ÖRN:16)\n");
 scanf("%d", &say1);
 printf("ikinci sayıyı giriniz.\n(ÖRN:93)\n");
 scanf("%d", &say2);

 printf("%d",say1 * say2);
 }

else(islem==4)
 {
 printf("ilk sayıyı giriniz.\n(ÖRN:16)\n");
 scanf("%d", &say1);
 printf("ikinci sayıyı giriniz.\n(ÖRN:93)\n");
 scanf("%d", &say2);

 printf("%d",say1 / say2);

 }

 return 0;
}

Hata:

/Main. C:32:4: Error: Expected expression.
Else(işlem==3)
^
1 error generated.
Make: *** [Makefile:10: Main] error 1
Exit status.
 
Çözüm
C:
#include <stdio.h>

int main() {

  int sayi1;
  int sayi2;
  int islem;
  int sonuc;

  printf("islemi giriniz. Toplama için 1'e, çıkarma için 2'ye, çarpma için "
         "3'e, bölme için 4'e basınız.\n");
  scanf("%d", &islem);

  if (islem == 1) {
    printf("ilk sayıyı giriniz.\n(ÖRN:16)\n");
    scanf("%d", &sayi1);
    printf("ikinci sayıyı giriniz.\n(ÖRN:93)\n");
    scanf("%d", &sayi2);

    printf("%d", sayi1 + sayi2);
  }

  else if (islem == 2) {
    printf("ilk sayıyı giriniz.\n(ÖRN:16)\n");
    scanf("%d", &sayi1);
    printf("ikinci sayıyı giriniz.\n(ÖRN:93)\n");
    scanf("%d", &sayi2);

    printf("%d", sayi1 - sayi2);
  }

  else if (islem == 3) {
    printf("ilk sayıyı giriniz.\n(ÖRN:16)\n");
    scanf("%d", &sayi1);
    printf("ikinci sayıyı giriniz.\n(ÖRN:93)\n");
    scanf("%d", &sayi2);

    printf("%d", sayi1 * sayi2);
  }

  else {
      printf("ilk sayıyı giriniz.\n(ÖRN:16)\n");
      scanf("%d", &sayi1);
      printf("ikinci sayıyı giriniz.\n(ÖRN:93)\n");
      scanf("%d", &sayi2);

      printf("%d", sayi1 / sayi2);
    }

  return 0;
}

Program fonksiyonlarını yerine getiriyor mu test etmedim, yazım hatalarını düzelttim ve biraz oynadım. Test etmek sende. Sorunun çözülürse çözüm olarak işaretlersen sevinirim.

@mehmet_emin_dgn
Hatadan bağımsız olarak, lütfen bu şekilde kod yazma. İki sayı istiyorsun değil mi? 4 kere iki sayı istemeyi yazmak yerine yapılacak işlemi seçtirdikten sonra sayıları iste ve daha sonrasında aldığın sayıları yukarıdaki seçilen değere göre işleme sok. Örnek; (Örnek daha iyi yazılabilir, amacım yaptığın hatayı anlaman. Tekrara düşüyorsun.)
C++:
#include <stdio.h>

int main(void) {
    int opt = 0, say1 = 0, say2 = 0, sonuc = 0;
   
    printf("islemi giriniz. Toplama için 1'e, çıkarma için 2'ye, çarpma için 3'e, bölme için 4'e basınız.\n");
    scanf("%d", &opt);
    printf("ilk sayıyı giriniz.\n(ÖRN:16)\n");
    scanf("%d", &say1);
     printf("ikinci sayıyı giriniz.\n(ÖRN:93)\n");
     scanf("%d", &say2);
   
    switch(opt) {
        case 1:
            sonuc = say1 + say2;
            break;
        case 2:
            sonuc = say1 - say2;
            if(sonuc < 0) { sonuc *= -1; }
            break;
        case 3:
            sonuc = say1 * say2;
            break;
        case 4:
            if(say1 == 0 || say2 == 0) {
                break;
            }
            if(say1 > say2) {
                sonuc = say1 / say2;
                break;
            }
            sonuc = say2 / say1;
            break;
    }
   
    printf("Sonuc: %d", sonuc);
    return 0;
}
 
Hatadan bağımsız olarak, lütfen bu şekilde kod yazma. İki sayı istiyorsun değil mi? 4 kere iki sayı istemeyi yazmak yerine yapılacak işlemi seçtirdikten sonra sayıları iste ve daha sonrasında aldığın sayıları yukarıdaki seçilen değere göre işleme sok. Örnek; (Örnek daha iyi yazılabilir, amacım yaptığın hatayı anlaman. Tekrara düşüyorsun.)
C++:
#include <stdio.h>

int main(void) {
    int opt = 0, say1 = 0, say2 = 0, sonuc = 0;
  
    printf("islemi giriniz. Toplama için 1'e, çıkarma için 2'ye, çarpma için 3'e, bölme için 4'e basınız.\n");
    scanf("%d", &opt);
    printf("ilk sayıyı giriniz.\n(ÖRN:16)\n");
    scanf("%d", &say1);
     printf("ikinci sayıyı giriniz.\n(ÖRN:93)\n");
     scanf("%d", &say2);
  
    switch(opt) {
        case 1:
            sonuc = say1 + say2;
            break;
        case 2:
            sonuc = say1 - say2;
            if(sonuc < 0) { sonuc *= -1; }
            break;
        case 3:
            sonuc = say1 * say2;
            break;
        case 4:
            if(say1 == 0 || say2 == 0) {
                break;
            }
            if(say1 > say2) {
                sonuc = say1 / say2;
                break;
            }
            sonuc = say2 / say1;
            break;
    }
  
    printf("Sonuc: %d", sonuc);
    return 0;
}
Bu arkadaşa katılıyorum. Çok fazla tekrara düşmüşsün kodu yazarken. Daha sade şekilde yazmak her zaman daha iyi olur.
 

Yeni konular

Geri
Yukarı