Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.03.2013, 23:04   #1
Veryn4ik1993
Пользователь
 
Регистрация: 12.09.2012
Сообщений: 81
По умолчанию нахождения корней уравнения

Я знаю, что так нельзя, но как можно по другому это сделать (нахождение корней уравнения)
Код:
namespace ex3
{
    public partial class MainForm : Form
    {
        double D,x1,x2;
        public MainForm()
        {
            InitializeComponent();
        }

        private void Executebutton_Click(object sender, EventArgs e)
        {
           D = (double.Parse(BtextBox1.Text))*(double.Parse(BtextBox1.Text))- 4*(double.Parse(AtextBox1.Text)*(double.Parse(CtextBox1.Text)));
           if (D > 0)
               ReztextBox1.Text = ((-1) * (int.Parse(BtextBox1.Text)) - Math.Sqrt(D)) / (2 * (int.Parse(AtextBox1.Text))).ToString();
               ReztextBox2.Text = ((-1) * (int.Parse(BtextBox1.Text)) + Math.Sqrt(D)) / (2 * (int.Parse(AtextBox1.Text))).ToString();
            if (D == 0)
                x1 = (double.Parse(BtextBox1.Text)) / (2 * (double.Parse(AtextBox1.Text)));
           
        }     
    }
}

Последний раз редактировалось Stilet; 17.03.2013 в 14:26.
Veryn4ik1993 вне форума Ответить с цитированием
Старый 17.03.2013, 12:38   #2
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

Почему нельзя? В целом? задачу решает, если бы не 1 ошибка
Код:
if (D > 0)
{
ReztextBox1.Text = ((-1) * (int.Parse(BtextBox1.Text)) - Math.Sqrt(D)) / (2 * (int.Parse( AtextBox1.Text))).ToString();
ReztextBox2.Text = ((-1) * (int.Parse(BtextBox1.Text)) + Math.Sqrt(D)) / (2 * (int.Parse( AtextBox1.Text))).ToString();
}
ну, и пропуск варианта с отрицательным дискриминантом.
Улучшение программы:
Код:
namespace ex3
{
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
}

private void Executebutton_Click(object sender, EventArgs e)
{
ReztextBox2.Text = "";
double a = double.Parse(AtextBox1.Text);
double b = double.Parse(BtextBox1.Text);
double c = double.Parse(CtextBox1.Text);
double D = b*b- 4*a;
if (D > 0)
{
ReztextBox1.Text = (-b - Math.Sqrt(D)) / (2 * a)).ToString();
ReztextBox2.Text = (-b + Math.Sqrt(D)) / (2 * a)).ToString();
}
if (D == 0)
ReztextBox1.Text = (b / (2 * a)).ToString();
if (D < 0)
ReztextBox1.Text = "Не имеет действительных корней";
} 
}
}
Можно ещё лучше сделать. Но уровень выше новичковского уже как бы.
Код:
namespace ex3
{
    public class Equation
    {
        double a, b, c;
        public Equation(double a, double b, double c)
        {
            this.a = a;
            this.b = b;
            this.c = c;
        }
        public bool Calc(ref double x1, ref double x2)
        {
            double D = b*b- 4*a*с;
            if (D >= 0)
            {
                x1 = (-b - Math.Sqrt(D)) / (2 * a);
                x2 = (-b + Math.Sqrt(D)) / (2 * a);
            }
            return D >= 0;
        }
    }

    public partial class MainForm : Form
    {
        public MainForm()
        {
            InitializeComponent();
        }

        private void Executebutton_Click(object sender, EventArgs e)
        {
            ReztextBox1.Text = "";
            ReztextBox2.Text = "";
            try
            {
                Equation eq = new Equation(double.Parse(AtextBox1.Text), double.Parse(BtextBox1.Text), double.Parse(CtextBox1.Text));
            }
            catch (FormatException)
            {
                AtextBox1.Text = "";
                BtextBox1.Text = "";
                CtextBox1.Text = "";
                MessageBox.Show("Неверный ввод, используйте числа");
                return;
            }
            doble x1, x2;
            if (eq.Calc(ref x1, ref x2))
            {
                ReztextBox1.Text = x1.ToString();
                if (x1 != x2)
                    ReztextBox2.Text = x2.ToString();
            }
            else
                ReztextBox1.Text = "Не имеет действительных корней";
        }
    }
}
Писал прямо тут без проверки работоспособности.

Запомните - код надо оформлять - кнопочка # в форме написании сообщения
Также очень советую форматировать код отступами - Ctrl+E, D в вижаул студии.

Последний раз редактировалось phomm; 17.03.2013 в 13:00.
phomm вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
определение корней уравнения Dellinger Помощь студентам 0 11.10.2011 19:51
поиск корней уравнения шурег Общие вопросы Delphi 8 15.12.2010 11:41
определить значение корней уравнения battleground Общие вопросы C/C++ 0 10.10.2010 20:08
функция нахождения корней линейного уровнения bnv Общие вопросы C/C++ 4 04.03.2009 16:51
Методы нахождения корней уравнения werser Помощь студентам 8 20.02.2008 22:41