6 мая 2015 г.

Написать перегруженные шаблоны функций для нахождения корней линейного (a*x + b = 0) и квадратного (a*x2+b*x + c = 0) уравнений. Замечание: в функции передаются коэффициенты уравнений.

int lin(int a, int b);
double lin(double a, double b);
void kv(double a, double b, double c);

void main()
{
setlocale(LC_ALL, "Russian");
int tmp;
do
{
double a, b, c;
//int a, b, c;
cout << "Эта программа находит корни линейного (a*x + b = 0)\nи квадратного (a*x2 + b*x + c = 0) уравнений.\n";
cout << "Какое уравнение решаем:\n1 - линейное\n2-квадратное\n";
cin>>tmp;
switch (tmp)
{
case 1:
cout << "Введите коэффициент a - ";
cin >> a;
cout << "Введите коэффициент b - ";
cin >> b;
cout << "Ответ: x=" << lin(a, b)<<"\n";
break;
case 2:
cout << "Введите коэффициент a - ";
cin >> a;
cout << "Введите коэффициент b - ";
cin >> b;
cout << "Введите коэффициент c - ";
cin >> c;
kv(a, b, c);
break;
}
cout << "Если хотите продолжить, нажмите 1:";
cin >> tmp;
} while (tmp == 1);
}

int lin(int a, int b)
{
double res;
res = (-b) / a;
return res;
}

double lin(double a, double b)
{
double res;
res = (-b) / a;
return res;
}

void kv(double a, double b, double c)
{
double x1, x2, d;
d = (b*b) - (4 * a * c);
if (d > 0)
{
x1 = ((-b) + sqrt(d)) / (2 * a);
x2 = ((-b) - sqrt(d)) / (2 * a);
cout << "Ответ: x1=" << x1 << "\n";
cout << "Ответ: x2=" << x2 << "\n";
}
else if (d < 0)
{
cout << "Нет корней\n";
}
else if (d == 0)
{
x1 = ((-b) + sqrt(d)) / (2 * a);
cout << "Ответ: x1=" << x1 << "\n";
}
}

Комментариев нет:

Отправить комментарий