protected override Vector <double> Solve(Vector <double> input)
        {
            Vector <double> result = new Vector <double>();

            if (input != null)
            {
                if (input.Count == 3)
                {
                    double a = input[0];
                    double b = input[1];
                    double c = input[2];
                    if (a == 0)
                    {
                        LinearEquation linearEquation = new LinearEquation();
                        linearEquation.Input = new Vector <double>()
                        {
                            b, c
                        };
                        result = linearEquation.Output;
                    }
                    else
                    {
                        double delta = b * b - 4 * a * c;
                        if (delta < 0)
                        {
                            result.IsNull = true;
                        }
                        else if (delta == 0)
                        {
                            result.Add(-b / 2 * a);
                        }
                        else
                        {
                            double sqrtDelta = Math.Sqrt(delta);
                            result.Add((-b + sqrtDelta) / (2 * a));
                            result.Add((-b - sqrtDelta) / (2 * a));
                        }
                    }
                }
                else
                {
                    throw new Exception("Invalid input vector: " + input);
                }
            }
            else
            {
                throw new Exception("Input must not null");
            }
            return(result);
        }
예제 #2
0
        static void Main(string[] args)
        {
            List <Vector <double> > inputs;
            List <Vector <double> > result = new List <Vector <double> >();
            Equation <double>       equation;
            LinearEquation          linearEquation    = new LinearEquation();
            QuadraticEquation       quadraticEquation = new QuadraticEquation();

            try
            {
                inputs = FileUtils.ReadFile("testcases.txt");
                Vector <double> res = new Vector <double>();
                foreach (Vector <double> input in inputs)
                {
                    if (input.Count < 3)
                    {
                        equation       = linearEquation;
                        equation.Input = input;
                    }
                    else
                    {
                        equation       = quadraticEquation;
                        equation.Input = input;
                    }
                    res = equation.Output;
                    Console.WriteLine("Input: {0,-15} -> Result: {1,-15}", input, res);
                    result.Add(res);
                }
                FileUtils.WriteFile("result.txt", result);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            Console.Read();
        }