• 11-10-2018, 11:07:24
    #1
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Öncelikle herkese merhaba, c dilinde çalışıyorum hesap makinesi türevi birşey yapamaya çalışıyorum. İf komutu kullanıyorum fakat if komutu görülmeden cmd kapanıyor. Nerede yanlış yapıyorum?

    #include <stdio.h>
    
        intmain(){
    
    char tercih;
    int x,y,z;
    printf("Birinci sayi giriniz.");
    scanf("%d",&x);
    printf("Ikinci sayi giriniz.");
    scanf("%d",&y);
    
    
    
    
    printf("nToplama->t");
    printf("nCikartma->c");
    printf("nBolme->b");
    printf("nCarpma->x");
    printf("nHangi islem?");
    scanf("%c",&tercih);
    
    
    
    if (tercih=='t'){
    
    z=x+y;
    printf("nToplama sonucu=%d",z);
    
    }
    
    if (tercih=='c'){
    
    z=x-y;
    printf("nCıkarma sonucu=%d",z);
    
    
    }
    
    if (tercih=='x'){
    
    z=x*y;
    printf("nCarpma sonucu=%d",z);
    
    }
    
    if (tercih=='b'){
    
    if (y!=0){
    
    z=x/y;
    printf("nBolme sonucu=%f",z);
    
    
    }
    
    if (y==0)
    
    
    printf("nPayda sifir olamaz.");
    
    
    }
    
    getch();
    
    
    
    
    
    
    }
  • 11-10-2018, 11:27:34
    #2
    ⭐1. SAYFA SEO HİZMETİ⭐
    üniversite mi okuyorsun hocam
  • 11-10-2018, 11:39:33
    #3
    scanf yerine getchar metodunu kullanıp dener misiniz, variable türünden bağımsız çalışıyor çünkü
  • 11-10-2018, 11:48:39
    #4
    evet hocam
    Alperenyld adlı üyeden alıntı: mesajı görüntüle
    üniversite mi okuyorsun hocam




    dediğiniz gibi yaptım fakat program hata verdi
    godlessturtle0 adlı üyeden alıntı: mesajı görüntüle
    scanf yerine getchar metodunu kullanıp dener misiniz, variable türünden bağımsız çalışıyor çünkü
  • 11-10-2018, 11:50:18
    #5
    printf("asd:");
    getchar();
    şeklinde olacak içine parametre vermeyin, gelen değeri de string değişkene aktarın
  • 11-10-2018, 11:54:55
    #6
    #include <stdio.h>
    #include <conio.h>
     
        int main(){
     
    char tercih;
    int x,y,z;
    printf("Birinci sayi giriniz.");
    scanf("%d",&x);
    printf("Ikinci sayi giriniz.");
    scanf("%d",&y);
     
     
     
     
    printf("nToplama->t");
    printf("nCikartma->c");
    printf("nBolme->b");
    printf("nCarpma->x");
    printf("nHangi islem?");
    scanf("%s",&tercih);
     
     
     
    if (tercih=='t'){
     
    z=x+y;
    printf("nToplama sonucu=%d",z);
     
    }
     
    if (tercih=='c'){
     
    z=x-y;
    printf("nCıkarma sonucu=%d",z);
     
     
    }
     
    if (tercih=='x'){
     
    z=x*y;
    printf("nCarpma sonucu=%d",z);
     
    }
     
    if (tercih=='b'){
     
    if (y!=0){
     
    z=x/y;
    printf("nBolme sonucu=%f",z);
     
     
    }
     
    if (y==0)
     
     
    printf("nPayda sifir olamaz.");
     
     
    }
     
     
     getch();
     return 0;
    
     
     
     
     
     
     
    }
    bu şekilde çalışacaktır
  • 11-10-2018, 11:55:41
    #7
    hocam bu sefer 2. sayı giriniz kısmını pas geçiyor.
    godlessturtle0 adlı üyeden alıntı: mesajı görüntüle
    printf("asd:");
    getchar();
    şeklinde olacak içine parametre vermeyin, gelen değeri de string değişkene aktarın




    sağolun hocam çalıştı
    Valx adlı üyeden alıntı: mesajı görüntüle
    #include <stdio.h>
    #include <conio.h>
     
        int main(){
     
    char tercih;
    int x,y,z;
    printf("Birinci sayi giriniz.");
    scanf("%d",&x);
    printf("Ikinci sayi giriniz.");
    scanf("%d",&y);
     
     
     
     
    printf("nToplama->t");
    printf("nCikartma->c");
    printf("nBolme->b");
    printf("nCarpma->x");
    printf("nHangi islem?");
    scanf("%s",&tercih);
     
     
     
    if (tercih=='t'){
     
    z=x+y;
    printf("nToplama sonucu=%d",z);
     
    }
     
    if (tercih=='c'){
     
    z=x-y;
    printf("nCıkarma sonucu=%d",z);
     
     
    }
     
    if (tercih=='x'){
     
    z=x*y;
    printf("nCarpma sonucu=%d",z);
     
    }
     
    if (tercih=='b'){
     
    if (y!=0){
     
    z=x/y;
    printf("nBolme sonucu=%f",z);
     
     
    }
     
    if (y==0)
     
     
    printf("nPayda sifir olamaz.");
     
     
    }
     
     
     getch();
     return 0;
    
     
     
     
     
     
     
    }
    bu şekilde çalışacaktır
  • 11-10-2018, 12:01:25
    #8
    Hata vermesi garip, bu tür işlemlerde switch-case kullanabilirsin.
  • 11-10-2018, 12:05:49
    #9
    Hocam scanf ile char okurken %c den önce boşluk koymamışsınız. scanf bu durumda satırbaşı " n" karakterini okur ve tercih değişkeninize " n" koyarak devam eder. Bu da diğer if'lerin hepsini false yaparak programın bitmesine sebep oluyor.

    Özetle

    scanf("%c",&tercih);
    olan kodu

    scanf(" %c",&tercih);
    olarak değiştirirseniz bu sorununuz çözülecektir.

    Ayrıca genel olarak kodunuzda hep "if" kullanmanız da pek doğru değil. Bu kodda herhangi bir eksikliğe ya da yavaşlığa sebep olmasa da doğru olan bu işlemler için if-else kullanmanız daha doğru olacaktır.