C++

Решение квадратных уравнений

// Программа решает квадратное уравнение, заданное с помощью коэффициентов.
// Если 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);
}
Добавлено: 21 Сентября 2013 12:07:13 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...