Ошибка в программе для решения уравнений - C#
Формулировка задачи:
Здравствуйте.
У меня было задание написать программу вычисляющую корни квадратного уравнения. Также нужно было сделать проверку введенных пользователем данных.
Сам код:
При попытке компиляции выдает ошибку "Use of unassigned local variable". Подскажите, как решить данную проблему?
Так же вопрос, можно ли здесь:
Сделать вывод типа исключения по другому? Просто брал из старых тем, может сейчас что изменилось.
Также, если можно, подскажите, как вынести код решения в отдельный класс или другой файл .cs?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Prog
{
public class Resh
{
public static void Main(string[] args)
{
double a, b, c, d, x1, x2 = 0;
string a1, b1, c1;
Console.WriteLine ("Представьте квадратное уравнение в виде: A*x^2 + B*x + C = 0");
Console.WriteLine ("Введите в програму числа 'A', 'B', 'C' в диапазоне от -17523 до +17523");
try
{
Console.WriteLine ("введите параметр A");
a1 = Console.ReadLine();
a = Convert.ToDouble(a1);
}
catch (OverflowException)
{
Console.WriteLine ("Вы ввели число выходящие за диапазон");
}
catch (FormatException)
{
Console.WriteLine ("Вы ввели не число");
}
catch (Exception ex)
{
Console.WriteLine ("Непредвиденная ошибка");
Console.WriteLine (ex.Message);
}
try
{
Console.WriteLine ("введите параметр B");
b1 = Console.ReadLine();
b = Convert.ToDouble(b1);
}
catch (OverflowException)
{
Console.WriteLine ("Вы ввели число выходящие за диапазон");
}
catch (FormatException)
{
Console.WriteLine ("Вы ввели не число");
}
catch (Exception ex)
{
Console.WriteLine ("Непредвиденная ошибка");
Console.WriteLine (ex.Message);
}
try
{
Console.WriteLine ("введите параметр A");
c1 = Console.ReadLine();
c = Convert.ToDouble(c1);
}
catch (OverflowException)
{
Console.WriteLine ("Вы ввели число выходящие за диапазон");
}
catch (FormatException)
{
Console.WriteLine ("Вы ввели не число");
}
catch (Exception ex)
{
Console.WriteLine ("Непредвиденная ошибка");
Console.WriteLine (ex.Message);
}
d = (b * b) - (4 * a * c); // ошибка вот здесь
if (a == 0)
{
x1 = x2 = -c / b;
Console.WriteLine("один корень: " , x1);
}
else
{
if (d < 0)
Console.WriteLine("корней нет");
else
{
if (d == 0)
{
x1 = x2 = -b / (2 * a);
Console.WriteLine("получаем полный квадрат, один корень: " , x1);
}
else
{
if (d > 0)
{
x1 = (-b - Math.Sqrt(d)) / (2 * a);
x2 = (-b + Math.Sqrt(d)) / (2 * a);
Console.WriteLine("два корня: ", x1 , " & " , x2);
}
}
}
}
}
}
} catch (Exception ex)
{
Console.WriteLine ("Непредвиденная ошибка");
Console.WriteLine (ex.Message);
}Решение задачи: «Ошибка в программе для решения уравнений»
textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication16
{
class Program
{
public static void Main(string[] args)
{
int y = 0;
string y1;
do
{
Kalk urav = new Kalk();
Console.WriteLine(urav.RKU());
Console.WriteLine("Удачного дня!");
for (; ; )
{
Console.WriteLine("Если хотите решить ещё одно уравнение, введите '1'.");
y1 = Console.ReadLine();
try
{
y = Convert.ToInt32(y1);
break;
}
catch (FormatException)
{
Console.WriteLine("Вы ввели не число");
}
catch (Exception ex)
{
Console.WriteLine("Непредвиденная ошибка");
Console.WriteLine(ex.Message);
}
}
} while (y == 1);
}
}
public class Kalk
{
double a, b, c;
public Kalk()
{
Vvod();
}
public void Vvod()
{
string a1, b1, c1;
Console.WriteLine("Представьте квадратное уравнение в виде: A*x^2 + B*x + C = 0");
Console.WriteLine("Введите в програму числа 'A', 'B', 'C' в диапазоне от -17523 до +17523");
for (; ; )
{
try
{
Console.WriteLine("введите параметр A");
a1 = Console.ReadLine();
a = Convert.ToDouble(a1);
break;
}
catch (OverflowException)
{
Console.WriteLine("Вы ввели число выходящие за диапазон");
}
catch (FormatException)
{
Console.WriteLine("Вы ввели не число");
}
catch (Exception ex)
{
Console.WriteLine("Непредвиденная ошибка");
Console.WriteLine(ex.Message);
}
}
for (; ; )
{
try
{
Console.WriteLine("введите параметр B");
b1 = Console.ReadLine();
b = Convert.ToDouble(b1);
break;
}
catch (OverflowException)
{
Console.WriteLine("Вы ввели число выходящие за диапазон");
}
catch (FormatException)
{
Console.WriteLine("Вы ввели не число");
}
catch (Exception ex)
{
Console.WriteLine("Непредвиденная ошибка");
Console.WriteLine(ex.Message);
}
}
for (; ; )
{
try
{
Console.WriteLine("введите параметр C");
c1 = Console.ReadLine();
c = Convert.ToDouble(c1);
break;
}
catch (OverflowException)
{
Console.WriteLine("Вы ввели число выходящие за диапазон");
}
catch (FormatException)
{
Console.WriteLine("Вы ввели не число");
}
catch (Exception ex)
{
Console.WriteLine("Непредвиденная ошибка");
Console.WriteLine(ex.Message);
}
}
}
public string RKU()
{
double d = 0.0, x1 = 0.0, x2 = 0.0;
string otv = "Нет решения!";
try
{
d = (b * b) - (4 * a * c);
if (a == 0)
{
x1 = x2 = -c / b;
otv = "Корень только один:" + x1;
}
else
{
if (d < 0)
otv = "Корней нет.";
else
{
if (d == 0)
{
x1 = x2 = -b / (2 * a);
otv = "Уравнение представляет собой полный квадрат. Корень один: " + x1;
}
else
{
x1 = (-b - Math.Sqrt(d)) / (2 * a);
x2 = (-b + Math.Sqrt(d)) / (2 * a);
otv = "У данного уравнения два корня: " + x1 + " и " + x2;
}
}
}
return otv;
}
catch
{
Console.WriteLine("Непредвиденная ошибка. Попробуйте снова.");
return otv;
}
}
}
}