Сегодня мы напишем программу, которая выведет нам решение квадратного уравнения на С#. Сделаем мы всё это в Windows Forms. В программе мы найдём дискриминант и оба корня.
Для создания программы нам понадобится знание начальной школы и трёх формул.
Формула нахождения дискриминанта:
Формула нахождения корней выражения, если дискриминант больше нуля:
И формула нахождения одного корня выражения, если дискриминант равен нулю:
Ну и, пожалуй, стоит вспомнить сам вид квадратного выражения:
Теперь пора приступать к программе.
Для начала создаём незамысловатую форму под наши нужды:
Здесь у нас 3 TextBox’a, 2 Label’a и 1 кнопка Button. Выводить решение мы будем в отдельном MessageBox’е.
Приступаем к коду. Дважды щёлкаем на Button и в открывшемся участке кода начинаем писать.
Сначала объявляем переменные, которым будут присвоены значения,введённые пользователем в TextBox’ы:
1 2 3 |
double a = Convert.ToDouble(textBox1.Text); double b = Convert.ToDouble(textBox2.Text); double c = Convert.ToDouble(textBox3.Text); |
Конвертируем данные из TextBox’ов в тип повышенной точности с плавающей точкой double, так как они имеют строковый тип, а нам нужен числовой.
Затем объявляем дискриминант и пишем его формулу:
1 |
double d = b * b - 4 * a * c; |
Мы знает три варианта развития событий при решении дискриминанта:
1) Если дискриминант больше нуля, то уравнение имеет два корня.
2) Если дискриминант равен нулю, то уравнение имеет лишь один корень.
3) Если дискриминант меньше нуля, то уравнение не имеет корней вообще.
Теперь перенесём написанное нами в код благодаря оператору условия if:
1 2 3 |
if (d < 0) { MessageBox.Show("Дискриминант меньше нуля. Корней нет."); } |
Если мы введём в нашу форму числа, нажмём кнопку «Решить уравнение» и окажется, что дискриминант будет меньше нуля, то программа нам выдаст в новом окне вот такое сообщение:
Теперь создадим условие, если дискриминант равен нулю:
1 2 3 4 5 |
if(d == 0) { double x=(-b/(2*a)); MessageBox.Show("Дискриминант равен нулю. Корень равен "+x+"."); } |
Мы создаём переменную, в которую занесётся решение формулы , а потом выводим эту переменную в MessageBox. Обратите внимание на форму записи такого вывода. Простой текст выводится в кавычках, а переменные выводятся при обрамлении их плюсами.
Вывод будет вот такой:
Ну и, наконец, условие, когда дискриминант больше нуля:
1 2 3 4 5 6 |
if(d > 0) { double x1 = ((-b - Math.Sqrt(d)) / (2 * a)); double x2 = ((-b + Math.Sqrt(d)) / (2 * a)); MessageBox.Show("Дискриминант равен " +d+ ". Первый корень равен "+x1+". Второй корень равен "+x2+"."); } |
Считаем корни по формуле и выводим их точно так же, как было описано выше.
Вот так работает наша программа, выдающая решение квадратного уравнения на С#. Исходный код программы ниже:
Скачать исходник
Поделиться в соц. сетях:
Спасибо за урок!
Подскажите пожалуйста, если взять все аргументы за ноль, результат такой: корень = не число. Что означает «не число»? Может можно как-то изменить? Спасибо.
А всё..Дошёл…
Коэффициент при первом слагаемом не может быть равен нулю.
Да. Потому что в этом случае происходит деление на ноль.