[проблема] C#

Всем доброго времени суток.
Возникла очередная проблема:
в программе, которую я написал (вычисление корней квадратного уравнения с применением ООП), упорно отказывается работать ввод переменной "c". Прошу вас, покажите, где я ошибся.
Заранее спасибо за помощь. :)
P.S. Прошу сильно не кидаться тапками, т.к. это, всего лишь, вторая программа на C#, которую я написал. :)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    internal class SquareEquation
    {
        static internal double a;
        static internal double b;
        static internal double c;
        static internal double x1;
        static internal double x2;
        static internal double d;

        static internal void Evaluate(double a, double b, double c)
        {
            d = b * b + 4 * a * c;
            if (d < 0) Console.WriteLine("There are no roots in this equation");
            if (d == 0)
            {
                x1 = (-b / (2 * a));
                Console.WriteLine("x1 = " + x1);
            }
            if (d > 0)
            {
                x1 = (-b + Math.Sqrt(d) / (2 * a));
                x2 = (-b - Math.Sqrt(d) / (2 * a));
                Console.WriteLine("x1 = " + x1);
                Console.WriteLine("x2 = " + x2);
            }
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            double a, b, c;
            Console.WriteLine("a = ");
            a = Convert.ToDouble(Console.ReadLine()) - 48;
            Console.WriteLine("b = ");
            b = Convert.ToDouble(Console.Read()) - 48;
            Console.WriteLine("c = ");
            c = Convert.ToDouble(Console.Read()) - 48;
            SquareEquation.Evaluate(a, b, c);
            Console.ReadKey();
        }
    }
}

 
 

Оставить комментарий

Комментарии:

 

zurg | 2013-02-16 03:02:30

Console.WriteLine("a = ");
a = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("b = ");
b = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("c = ");
c = Convert.ToDouble(Console.ReadLine());

(забыл случай 3-х нулей! нехорошо на 0 делить!!! атата)

Редактировано 2013-02-16 03:09:10.
Ответить.

     

    4Never | 2013-02-16 08:49:15

    Оуу... точно...
    спасибо большое:)

    хотя... я видел предупреждение о том, что всё в нуль обращается... но я так и не понял, как с этим бороться.

    upd.: как приеду домой, сразу перепишу немного код и покажу, что выйдет.

    upd. #2:

    
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace ConsoleApplication1
    {
        internal class SquareEquation
        {
            static internal double a;
            static internal double b;
            static internal double c;
            static internal double x1;
            static internal double x2;
            static internal double d;
    
            static internal void Evaluate(double a, double b, double c)
            {
                d = b * b + 4 * a * c;
                if (d < 0) Console.WriteLine("There are no roots in this equation");
                if (d == 0)
                {
                    x1 = (-b / (2 * a));
                    Console.WriteLine("x1 = " + x1);
                }
                if (d > 0)
                {
                    x1 = (-b + Math.Sqrt(d) / (2 * a));
                    x2 = (-b - Math.Sqrt(d) / (2 * a));
                    Console.WriteLine("x1 = " + x1);
                    Console.WriteLine("x2 = " + x2);
                }
            }
        }
    
        class Program
        {
            static void Main(string[] args)
            {
                double a, b, c;
                Console.WriteLine("a = ");
                a = Convert.ToDouble(Console.ReadLine()) - 48;
                Console.WriteLine("b = ");
                b = Convert.ToDouble(Console.Read()) - 48;
                Console.WriteLine("c = ");
                c = Convert.ToDouble(Console.Read()) - 48;
                if (a != 0 && b != 0 || b != 0) SquareEquation.Evaluate(a, b, c); else Console.WriteLine("Error: Unexpected value");
                Console.ReadKey();
            }
        }
    }
    


    Редактировано 2013-02-16 15:38:03.
    Ответить.

     

 

Svyat | 2013-02-19 03:36:38

По-моему при подсчете корней необходимо брать в скобки (-b + sqrt(d)):
x1 = ((-b + Math.Sqrt(d)) / (2 * a));
Ответить.

 





Версия для печати