İkinci dereceden denklemin köklerini hesaplayan algoritma

sıddııık

Decapat
Katılım
31 Ağustos 2022
Mesajlar
285
Daha fazla  
Cinsiyet
Erkek
"A≠0 olmak üzere katsayıları girilen ikinci dereceden (ax² + bx + c = 0) denklemin köklerini hesaplayan algoritmanın akış şemasını çiziniz." sorusunun cevabını Unity'de kodlamaya çalıştım.

Kod:
public class Algoritma : MonoBehaviour
{
    public int a,b,c;
    int d;
    float x1, x2;
    void Start()
    {
       Debug.Log("a,b,c değerlerini giriniz");
       if(a == 0)
       {
        Debug.Log("a değerini başka değer giriniz.");
       }
       else
       {
        d = (b * b) - (4 * a * c);
        Debug.Log(d);
       }
       if(d > 0)
       {
        x1 = -b + Mathf.Sqrt(d) / 2*a;
        Debug.Log(x1);       
        x2 = -b - Mathf.Sqrt(d) / 2*a;
        Debug.Log(x2);
       }
       else if (d == 0)
       {
        x1 = -b / 2 * a;
        x2 = -b / 2 * a;
       Debug.Log(x1);
       Debug.Log(x2);
       }
       else if(d < 0)
       {
        Debug.Log("denklemin reel kökü yoktur.");
       }
    }
}

a = 1, b = 5, c = -14 olarak girdiğimde d yani diskraminant değerini "81" olarak belirliyor. Ama x1 ve x2 için virgüllü değerler veriyor. Tam cevap çıkmıyor. Formül için d değerinin karekökünü almaya çalıştım. Ama tam sayı değerine çeviremedim. Yardımcı olabilir misiniz?
 
x1,x2 yi float almışsın int alırsan düzelir gibi.
Onu yaptım bu sefer de
if(d > 0)
{
" x1 = -b + Mathf.Sqrt(d) / 2*a; "
Debug.Log(x1);
" x2 = -b - Mathf.Sqrt(d) / 2*a; "
Debug.Log(x2);
}
Tırnak içerisine aldığım kod satırları hata veriyor. Aldığım hata ise "Cannot implicitly convert type 'float' to 'int'. An explicit conversion exists (are you missing a cast?)"
 
Kod:
        x1 = (int)(-b + Mathf.Sqrt(d) / 2*a);
        Debug.Log(x1);       
        x2 = (int)(-b - Mathf.Sqrt(d) / 2*a);
        Debug.Log(x2);
       }
       else if (d == 0)
       {
        x1 = (int)(-b / 2 * a);
        x2 = (int)(-b / 2 * a);

Şu şekilde dener misin
 
Kod:
        x1 = (int)(-b + Mathf.Sqrt(d) / 2*a);
        Debug.Log(x1);     
        x2 = (int)(-b - Mathf.Sqrt(d) / 2*a);
        Debug.Log(x2);
       }
       else if (d == 0)
       {
        x1 = (int)(-b / 2 * a);
        x2 = (int)(-b / 2 * a);

Şu şekilde dener misin
Tam sayı sonucu verdi ama doğru sonucu vermedi.
 
Son düzenleyen: Moderatör:

Technopat Haberler

Yeni konular

Geri
Yukarı