• 25-10-2018, 16:56:51
    #1
    Merhabalar,
    Ödev gereği ax^2+bx+c=0 denkleminin köklerini hesaplayan bir program yapmam istendi C'de. Programda sorun yok gayet düzgün biçimde çalıştırıyor. Ama verilen şemada discriminant < 0 değerinde "I" değişkeni var. Bu değişkenin değeri yok char olarak tanımladım, sadece harf alması için. Fakat koda bunu eklediğim zaman doğru çıkan kodum hata veriyor. Sırasıyla 1-4-8 değerlerini girdiğim zaman almam gereken root sonuçları 0 ve -4 olması gerekirken "I" yüzünden -2 ve -2 alıyorum. Bunu nasıl çözebilirim?
    "I" değikeninin bir amacı yok, sadece kodda olması gerekiyor. Değer atamıyoruz. Hoca kodda olacak diye tutturdu ki internette tonlarca örneğin hiçbirinde bu değişkeni eklememişler. Yardım bekliyorum
    CODE alanı ters slash'ı kabul etmiyor, okunurluk azalmış :/
    #include <stdio.h>
    #include <math.h>
    
    void main() {
    int a, b, c;
    double root1, root2, d, realroot;
    char I;
    printf ("Please enter a number A: ", a);
    scanf("%d", &a);
    
    printf("Please enter a number B: ", b);
    scanf("%d", &b);
    
    printf("Please enter a number C: ", c);
    scanf("%d", &c);
    //d=discriminant
    d=(b*b-4*a*c)/4*a*a;
    if (a!=0){
    if (d<0){
    printf("nCalculate discriminant: %.2lf", d);
    root1= -b/2*a+I*sqrt(-d);
    root2= -b/2*a-I*sqrt(-d);
    printf("nTwo Complex Solutionnroot1: %.1lftroot2: %.1lf", root1, root2);
    }
    else if (d>0){
    printf("nCalculate discriminant: %.2lf", d);
    root1=-b/2*a+sqrt(d);
    root2=-b/2*a-sqrt(d);
    printf("nTwo Real SolutionnRoot1: %.1lftRoot2: %.1lf", root1, root2);
    }
    else {
    printf("nCalculate discriminant: %.2lf", d);
    realroot=-b/2*a;
    printf("nReal SolutionnReal Root: %.1lf", realroot);
    }
    }
    if(a==0){
    if(b!=0){
    realroot=-c/b;
    printf("nReal SolutionnReal Root: %.1lf", realroot);
    }
    else if(b==0){
    if (c==0){
    printf("nEvery number is solution...");
    }
    else if(c!=0){
    printf("nNo solution...");
    }
    }
    }
    printf("nn...End of The Program...");
    }
  • 25-10-2018, 17:11:19
    #2
    Kimlik doğrulama veya yönetimden onay bekliyor.
    tam olarak I dediğin yeri anlamadım. bir kodun içinde mi olması gerek ? kodun hatalı halini atarsan yardımcı olurum



    2-3 kere okuyunca çıkardığım tek şey kodda bir char I duracak hiçbi şekilde kullanmayacağın. kodunda problem yok ve ters slashları kabul ediyor. derleyicinde problem olabilir.

    https://i.hizliresim.com/MDONAQ.png
  • 25-10-2018, 17:22:37
    #3
    SLKing adlı üyeden alıntı: mesajı görüntüle
    tam olarak I dediğin yeri anlamadım. bir kodun içinde mi olması gerek ? kodun hatalı halini atarsan yardımcı olurum




    2-3 kere okuyunca çıkardığım tek şey kodda bir char I duracak hiçbi şekilde kullanmayacağın. kodunda problem yok ve ters slashları kabul ediyor. derleyicinde problem olabilir.

    https://i.hizliresim.com/MDONAQ.png
    Kodu düzenledim d<0'da I*sqrt(d) var ondan bahsediyorum. Bunu yazdığım zaman sende çıkan sonucun farklısı çıkıyor. Bunu çözemedim. I'nın değerinin olmaması lazım ve hoca kodda girsin istiyor. Koda I=1 olarak tanımlarsan ss'deki sonucu elde ediyorum ama sadece I olarak bırakmak istiyorum. Ters slashlar ise forumda kabul edilmedi onu yazmıştım.
  • 25-10-2018, 17:27:21
    #4
    kodunun çözümü çok basit. I harfini matematik işleminde kullanıyorsun. eğer sayı olarak char karakterine 1 değeri atarsan etkisiz elemana çevirirsin.

    bu da sonucu : https://i.hizliresim.com/pndyla.png



    edit : foto çift monitör olmuş yenisi : https://i.hizliresim.com/j690Zm.png
  • 25-10-2018, 19:08:29
    #5
    SLKing adlı üyeden alıntı: mesajı görüntüle
    kodunun çözümü çok basit. I harfini matematik işleminde kullanıyorsun. eğer sayı olarak char karakterine 1 değeri atarsan etkisiz elemana çevirirsin.

    bu da sonucu : https://i.hizliresim.com/pndyla.png




    edit : foto çift monitör olmuş yenisi : https://i.hizliresim.com/j690Zm.png
    Teşekkür ederim, bizim hocanın sanırım bizi anlamamak gibi bir huyu var. Bunu yaptığım zaman anlattım yok fln dedi. Ama başka bir yolu da yok madem istiyor I'yı razı gelecek. Sonuca etki etmesin dedi. Tekrar teşekkür ederim iyi akşamlar
  • 25-10-2018, 19:43:28
    #6
    SoftCry adlı üyeden alıntı: mesajı görüntüle
    Teşekkür ederim, bizim hocanın sanırım bizi anlamamak gibi bir huyu var. Bunu yaptığım zaman anlattım yok fln dedi. Ama başka bir yolu da yok madem istiyor I'yı razı gelecek. Sonuca etki etmesin dedi. Tekrar teşekkür ederim iyi akşamlar
    hocanızı anlayabiliyorum aranızda farkındalık yaratabilenleri seçmek istiyor. bu arada umarım char karakteri matematik işleminde kullandığınız zaman laf etmez. ben kodunuzu düzelttim sadece. formülizede eğer I harfi bulunması gerek diyorsa int I diye üstte tanımlamanız daha doğru olur. eğer char istediyse zaten çözümü size sundum. iyi akşamlar