Şimdi Ara

C - Denklem Kökleri Hesaplama

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
12
Cevap
0
Favori
1.282
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • C'ye yeni başladım. İkinci dereceden bir denklemin köklerini hesaplayan basit bir program yazdım.

    #include <stdio.h>

    #include <stdlib.h>

    #include <math.h>

    int main ()

    {

    int a,b,c;
    float D,k1,k2;

    printf("İkinci dereceden bir denklemin katsayılarını sırayla girin:");

    scanf("%d %d %d",&a,&b,&c);
    D= (pow(b, 2) - 4*a*c);
    k1= (-b+sqrt(D)/(2*a));
    k2= (-b-sqrt(D)/(2*a));

    if(D<0)
    printf("Bu denklemin reel bir kökü yoktur.");
    if(D=0)
    printf("Bu denklemin tek reel kökü: %f",k1);
    if(D>0)
    printf("Bu denklemin reel kökleri: %f ve %f",k1,k2);


    return 0;

    }

    Sorum şu ki, programı derlerken hata vermiyor. Ama çalıştırınca istediği 3 katsayıyı yazıp enterlayınca direk Terminal Session Stopped diyor ve program çalışmıyor. Nedenini anlamadım. Ne yapmalıyım?



    < Bu mesaj bu kişi tarafından değiştirildi W.F.Hopper -- 7 Nisan 2015; 23:12:21 >
    < Bu ileti mobil sürüm kullanılarak atıldı >







  • programındaki hatayı gormedım ama şu şekilde de yazılabilri.

    #include <stdio.h>
    #include <math.h>
    main(){

    int x,x1,x2,dis,a,b,c,k;

    k=(a*(x*x)+b*x+c);

    printf("a yi giriniz: ");
    scanf("%d",&a);
    printf("b yi giriniz: ");
    scanf("%d",&b);
    printf("c yi giriniz: ");
    scanf("%d",&c);

    dis=b*b-4*a*c;

    if(dis>0){
    printf("Reel iki kok vardir.\n\n");
    x1=(-b+pow(dis,1/2))/2*a;
    x2=(-b-pow(dis,1/2))/2*a;
    printf("x1 = %d\n",x1);
    printf("x2 = %d\n",x2);
    }
    else if(dis==0){
    printf("Esit iki kok vardir.\n\n");
    x1=-b/2*a;
    x2=-b/2*a;
    printf("x1 = %d\n",x1);
    printf("x2 = %d\n",x2);
    }
    else {
    printf("Reel kok yoktur.");
    }




    }




  • quote:

    Orijinalden alıntı: hellbas

    programındaki hatayı gormedım ama şu şekilde de yazılabilri.

    #include <stdio.h>
    #include <math.h>
    main(){

    int x,x1,x2,dis,a,b,c,k;

    k=(a*(x*x)+b*x+c);

    printf("a yi giriniz: ");
    scanf("%d",&a);
    printf("b yi giriniz: ");
    scanf("%d",&b);
    printf("c yi giriniz: ");
    scanf("%d",&c);

    dis=b*b-4*a*c;

    if(dis>0){
    printf("Reel iki kok vardir.\n\n");
    x1=(-b+pow(dis,1/2))/2*a;
    x2=(-b-pow(dis,1/2))/2*a;
    printf("x1 = %d\n",x1);
    printf("x2 = %d\n",x2);
    }
    else if(dis==0){
    printf("Esit iki kok vardir.\n\n");
    x1=-b/2*a;
    x2=-b/2*a;
    printf("x1 = %d\n",x1);
    printf("x2 = %d\n",x2);
    }
    else {
    printf("Reel kok yoktur.");
    }




    }

    Main fonksiyonunu int main() olarak tanımlıyorum. Ve return 0;'ı da ekliyorum. Ama derleyici hata veriyor. Belki de derleyicide sorun vardır. Telefondan yapıyorum. Cppdroif kullanıyorum.

    Bu arada k'yı boşuna tanımlamışsın galiba.

    < Bu ileti mobil sürüm kullanılarak atıldı >




  • Bilgisayarda da Dev C++ üzerinde denedim. Aynı sorunu onda da yaşadım. Yani sorun derleyicide değilmiş. Yardım edebilirseniz sevinirim.

    < Bu ileti mobil sürüm kullanılarak atıldı >
  • giriyorum dediğin 3 katsayı nedir?
  • #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    int main ()
    {
    int a,b,c,k1,k2;
    float D;
    printf("İkinci dereceden bir denklemin katsayılarını sırayla girin:");

    scanf("%d %d %d",&a,&b,&c);
    D= (pow(b, 2) - 4*a*c);
    k1= (-b+sqrt(D))/(2*a);
    k2= (-b-sqrt(D))/(2*a);

    if(D<0)
    printf("Bu denklemin reel bir kökü yoktur.");
    if(D==0)
    printf("Bu denklemin tek reel kökü: %d",k1);
    if(D>0)
    printf("Bu denklemin reel kökleri: %d ve %d",k1,k2);

    return 0;

    }

    //değişken dönüşümünde hatayı düzelttim (d kesinlikle float olmalı, k1 ve k2 int olabilir.)
    //k1'i bulurken /2*a yı parantez dışında yaptım,
    //if'in içerisinde 2 tane eşittir yaptım
    //umarım sende de düzgün çalışır.




  • Hocam math I include etmişsin ama pow ve sqrt yazarken başına math.pow yada math.sqrt demen gerekmiyor mu? C yi bilmem ama c# da problem çıkartıyor bu durum.

    < Bu ileti mobil sürüm kullanılarak atıldı >
  • adnansetek kullanıcısına yanıt
    C de gerek yok hocam

    < Bu ileti mobil sürüm kullanılarak atıldı >
  • @alturk19

    Valla bunda da derlerken sorun çıkıyor.

    @adnansetek

    Hayır gerek olmuyor.



    < Bu mesaj bu kişi tarafından değiştirildi W.F.Hopper -- 9 Nisan 2015; 12:53:26 >
    < Bu ileti mobil sürüm kullanılarak atıldı >
  • Ne hatasi veriyor?
    Ekran görüntüsü gönderebilir misin?

    < Bu ileti mobil sürüm kullanılarak atıldı >
  • quote:

    Orijinalden alıntı: altrk19

    Ne hatasi veriyor?
    Ekran görüntüsü gönderebilir misin?

    Verdiği hata çok karışık ve sayfalarca uzun. Ben de anlamadım. Görüntü de gönderebileceğimi sanmıyorum. Çünkü hata penceresi telefon ekranının çok ufak bir kısmında ve parça parça okuyabiliyorum. 15-20 tane ekran görüntüsü almak gerekir. Kopyalayamıyorum da.

    < Bu ileti mobil sürüm kullanılarak atıldı >
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.