Решение квадратных уравнений
// Программа решает квадратное уравнение, заданное с помощью коэффициентов.
// Если a = 0, то программа решает линейное уравнение.
// Конечно, можно было бы обойтись и без указателей, но так интереснее
#include <iostream>
#include <cmath>
using namespace std;
void quadr (double &, double &, double &);
double discr (double &, double &, double &);
void lin (double &, double &);
void ext ();
void main ()
{
setlocale (LC_ALL, "Russian");
cout << "Для решения квадратного уравнения введите значения коэффициентов a, b и c." << endl;
double *a, *b, *c = 0;
double m, n, k = 0;
cout << "a = "; cin >> m;
cout << "b = "; cin >> n;
cout << "c = "; cin >> k;
a = &m;
b = &n;
c = &k;
if (m == 0)
{
cout << "Уравнение линейное." << endl;
lin (*b, *c);
}
else
quadr (*a, *b, *c);
}
void quadr (double &a, double &b, double &c)
{
if ((discr (a, b, c)) < 0)
{
cout << "Дискриминант меньше 0, уравнение не имеет корней.";
ext ();
}
double x1, x2 = 0;
x1 = (-b + sqrt(discr (a, b, c)))/(2*a);
x2 = (-b - sqrt(discr (a, b, c)))/(2*a);
if (x1 == x2)
{
cout << "Уравнение имеет один корень; x = " << x1;
ext ();
}
else
{
cout << "Уравенение имеет два корня; x1 = " << x1 << "; x2 = " << x2 << ".";
ext ();
}
}
double discr (double &a, double &b, double &c)
{
return ((pow (b, 2)) - 4*a*c);
}
void lin (double &b, double &c)
{
if (b == 0)
{
cout << "Коэффициент b равен нулю, уравнение некорректно!";
ext ();
}
double x = c/b;
cout << "x = " << x;
ext ();
}
void ext ()
{
cout << endl << "Хотите продолжить? 1 — да; любой другой знак — нет." << endl;
short q;
cin >> q;
switch (q)
case 1: {cout << endl;
main ();}
system ("pause");
exit (0);
}
Комментарии:
Нету комментариев для вывода...