KostyeFromHelen
6. Решение квадратного уравнения на C#, убираем ошибки.
05.10.2010 16:17:39

Честно говоря, когда я нашёл время поискать ошибки, которые могут возникать в программе, мне так хотелось спать, что я нашёл только 2 или 3 из них. Смотрим улучшенный код программы по решению квадратного уравнения:

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

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Введите первый коэффициент");
int a = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Введите второй коэффициент");
int b = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Введите третий коэффициент");
int c = Convert.ToInt32(Console.ReadLine());
if (a == 0) Ошибка 1
{
Console.WriteLine("Уравнение не является квадратным:{0}*x+{1}=0", b,c );
if (b == 0) Ошибка 2
{
Console.WriteLine("Извините товарищ, но это уже не уравнение!");
}
else
{
double x = 0;
x = -c / b;
Console.WriteLine("x={0}", x);
}
}
else
{
double d;
d = b * b - 4 * a * c;

if (d < 0)
{
Console.WriteLine("Дискриминант отрицательный, корней нет");

}
if (d == 0)
{
double x1 = b / (2 * a);
Console.WriteLine("Дискриминант = 0, x = {0}", x1);

}
if (d > 0)
{
double x1 = (-b + Math.Sqrt(Convert.ToDouble(d))) / (2 * a);
double x2 = (-b - Math.Sqrt(Convert.ToDouble(d))) / (2 * a);
Console.WriteLine("Дискриминант = {0}, x1 = {1}, x2 ={2}", d, x1, x2);
}
}
}
}
}

 

В первом случае если коэффициент а равен 0, то  в данной строчке  double x2 = (-b - Math.Sqrt(Convert.ToDouble(d))) / (2 * a); мы делим на 0, что недопустимо. По-этому мы  и вставляем код проверки, после которого либо выполняем код дальше, либо решаем уравнение другим, простым методом.

Ошибка 2 возникает если коэффициент а равен 0 и b равен 0. Тогда получается даже не уравнение, что мы и сообщаем пользователю.

Так же есть ошибка, если мы вместо цифр вобьём буквы в переменные a, b и c. Но такую ошибку надо отлавливать с помощью инструкции try-catch, её рассмотрим в следующем уроке.




Теги: C# | реализация квадратного уравнения на | решение квадратного уравнения | .


 

Nt_Net
15.10.2010 21:54:27

Блеск! Нашему преподавателю учиться и учиться до такого подробного объяснения!
Когда будет продолжение!???М?

 
admin
16.10.2010 11:00:11

Может сегодня вечером, может завтра расскажу про try-catch, как отловить эту ошибку.
Просто сейчас времени мало

 
Nt_Net
16.10.2010 19:07:30

Эх, ну будем ждать с нетерпением!
А о циклах лучше даже и не стоит спрашивать!?

 
admin
16.10.2010 19:09:07

Циклы for(foreach)? Там ничего трудного циклы они и в африке циклы. Что-нибудь расскажу, только время бы.
Институт, автошкола, ещё и переписчиком работаю(перепись населения), морока

 
ОГРОН
17.02.2011 12:15:37

ПЕ-ПЕ

 


Программируем на C#, интересные статьи, книги, музыка; Костя Карпов.