Kodumdaki hata ne?

342746

Kilopat
Katılım
2 Haziran 2020
Mesajlar
5.442
Makaleler
10
Çözümler
84
Arkadaşlar k/K değeri seçince normal bir şekilde ilerliyor fakat d/D değeri seçince en sondaki else değerini de bastırıyor. Hatam nerede?

Kod:
#include <stdio.h>
#include <stdlib.h>
#define pi 3.14 //burada pi'nin değerini değiştirebilirsiniz.


int main()
{

    char sekil;

    printf("Daire mi Kup mu? D/K\n");
    scanf("%c", &sekil);


    if (sekil == 'd' || sekil == 'D')
    {
  
        float yaricap;

        printf("Dairenin alan ve cevresi icin bir yaricap giriniz.\n");

        scanf("%f", &yaricap);

        printf("Dairenin alani: %.2f\n", pi * yaricap * yaricap);

        printf("Dairenin cevresi: %.2f\n", (2 * pi) * yaricap);
    }


    if (sekil == 'k' || sekil == 'K')
    {
        float kupBirkenar;

        printf("Kupun alan ve hacimi icin bir kenariniz giriniz.\n");

        scanf("%f", &kupBirkenar);

        printf("Kupun alani: %.2f\n", 6 * kupBirkenar * kupBirkenar);

        printf("Kupun hacmi: %.2f\n", kupBirkenar * kupBirkenar * kupBirkenar);
    }


else  {
    printf("Lutfen gecerli bir deger giriniz.\n");
}

    system("pause");

    return 0;
}
 
İkinci if, else if şeklinde olmalı.
C:
    if (sekil == 'd' || sekil == 'D')
    {

        float yaricap;

        printf("Dairenin alan ve cevresi icin bir yaricap giriniz.\n");

        scanf("%f", &yaricap);

        printf("Dairenin alani: %.2f\n", pi * yaricap * yaricap);

        printf("Dairenin cevresi: %.2f\n", (2 * pi) * yaricap);
    }
    else if (sekil == 'k' || sekil == 'K')
    {
        float kupBirkenar;

        printf("Kupun alan ve hacimi icin bir kenariniz giriniz.\n");

        scanf("%f", &kupBirkenar);

        printf("Kupun alani: %.2f\n", 6 * kupBirkenar * kupBirkenar);

        printf("Kupun hacmi: %.2f\n", kupBirkenar * kupBirkenar * kupBirkenar);
    }
    else  {
        printf("Lutfen gecerli bir deger giriniz.\n");
    }
 
İkinci if, else if şeklinde olmalı.
C:
    if (sekil == 'd' || sekil == 'D')
    {

        float yaricap;

        printf("Dairenin alan ve cevresi icin bir yaricap giriniz.\n");

        scanf("%f", &yaricap);

        printf("Dairenin alani: %.2f\n", pi * yaricap * yaricap);

        printf("Dairenin cevresi: %.2f\n", (2 * pi) * yaricap);
    }
    else if (sekil == 'k' || sekil == 'K')
    {
        float kupBirkenar;

        printf("Kupun alan ve hacimi icin bir kenariniz giriniz.\n");

        scanf("%f", &kupBirkenar);

        printf("Kupun alani: %.2f\n", 6 * kupBirkenar * kupBirkenar);

        printf("Kupun hacmi: %.2f\n", kupBirkenar * kupBirkenar * kupBirkenar);
    }
    else  {
    printf("Lutfen gecerli bir deger giriniz.\n");
}
Normal de buna benzer bir kod da aynı if if şeklin de yapmıştım ama çalışmıştı.
İkinci 'if'i else if olarak değiştirin.
Evet çalıştı fakat neden ikisi birden if olmuyor?
 
Normal de buna benzer bir kod da aynı if if şeklin de yapmıştım ama çalışmıştı.
Farklı iki değişkeni kontrol ederken if if şeklinde olabilir.

Sizin ilk attığınız kodda, 'd' girildiğinde ilk if çalışır. Sonrasında 2. if'e ayrıca girer. 2. if içerisinden false döndüğü için else bloğu da çalıştırılır.

Eğer if else if else şeklinde olursa ilk if true olduğunda diğer if'lerin içerisine girilmez.
 
Normal de buna benzer bir kod da aynı if if şeklin de yapmıştım ama çalışmıştı.

Evet çalıştı fakat neden ikisi birden if olmuyor?

İf if yapıp else koyarsanız kurala uymayan ifin elsesi çalışır. Çalışmıştı dediğiniz iflerin elsesi yoktur.
 

Yeni konular

Geri
Yukarı