Square root line doesn’t work

时光毁灭记忆、已成空白 提交于 2019-12-13 07:54:47

问题


I wrote a quick code for factorizing formulas, however the line that takes creates the square root of D doesn’t work. The line is line 10. Any help is appreciated.

using System;
 public class MainClass {

 //Source Numbers
 public int A = 1;
 public int B = 3;
 public int C = 9;
 //Calculation Numbers
 public float Di;
 public static double Sqrt(double Di);   //This is the faulted line.
 //Answers
 public float X;
 public float X1;
 public float X2;

 public static void Main() {
Console.Writeline("D=", Di);
//Calculation for the Square root of D
 // (DSq)Math.Sqrt(Di);
   Di = B^2-4*A*C;
//Calculation for the answers
   if(Di>0) {
      X1 = ((0-B)-DSq)/(A*2);
      X2 = ((0-B)+DSq)/(A*2);
      Console.Writeline("X=", X1, " or X=", X2);
   }
   else if(Di=0) {
      X = 0-B;
      Console.Writeline("X=", X);
   }
   else {
   Console.Writeline("The formula cannot be solved.");
    }
   }
  }

回答1:


You are using a method definition with no body. In any case you dont need to invent the wheel, since Math has already a Math.Sqrt(), method. Try:

........
Di = B^2-4*A*C;
if (Di>0)
{
  var sqrDi =   Math.Sqrt(Di);
  .....
}
...



回答2:


You have several errors in your code, like the spelling of WriteLine, and comparing in if statements (use ==). This returns a list of valid solutions (X-values):

public IList<double> factorizeABC(double a, double b, double c)
{
    var solutions = new List<double>();
    var Di = b * b - 4 * a * c;
    if (Di > 0)
    {
        var rtDi = Math.Sqrt(Di);
        var X1 = (-b - rtDi) / (a * 2);
        var X2 = (-b + rtDi) / (a * 2);
        solutions.Add(X1);
        solutions.Add(X2);      
    }
    else if (Di == 0)
    {
        var X = -b / (a * 2);       
        solutions.Add(X);
    }
    return solutions;
}

usage:

var results = factorizeABC(1, 2, -8);

if (results.Count() == 0)
    Console.WriteLine("The formula cannot be solved.");
if (results.Count() == 1)
    Console.WriteLine("X=" + results[0].ToString());
if (results.Count() == 2)
    Console.WriteLine("X=" + results[0].ToString() + " or X=" + results[1].ToString());


来源:https://stackoverflow.com/questions/47569997/square-root-line-doesn-t-work

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!