Написать алгоритм нахождения корней квадратного
уравнения ax^2 + bx +c, с пояснениями.
C/C++
Найти корни квадратного уравнения.
#include <math.h>
#include <stdio.h>
#include <unistd.h>
int main()
{
double a, b, c, discriminant,
root1, root2, realPart, imagPart;
printf("Enter coefficients a,b,c:\n");
//ввод значений через пробел:
scanf("%lf %lf %lf", &a, &b, &c);
//дискриминант уравнения:
discriminant = b * b - 4 * a * c;
if (discriminant > 0)
{
root1 = (-b + sqrt(discriminant)) / (2 * a);
root2 = (-b - sqrt(discriminant)) / (2 * a);
printf("root1 = %.2lf and root2 = %.2lf", root1, root2);
}
else
if (discriminant == 0)
{
root1 = root2 = -b / (2 * a);
printf("root1 = root2 = %.2lf", root1);
}
else
{
realPart = -b / (2 * a);
imagPart = sqrt(-discriminant) / (2 * a);
printf("root1 = %.2lf+%.2lfi\nand root2 = %.2f-%.2fi", realPart, imagPart, realPart, imagPart);
}
printf("\n\n");
sleep(10);//пауза
return 0;
}

#include <stdio.h>
#include <unistd.h>
int main()
{
double a, b, c, discriminant,
root1, root2, realPart, imagPart;
printf("Enter coefficients a,b,c:\n");
//ввод значений через пробел:
scanf("%lf %lf %lf", &a, &b, &c);
//дискриминант уравнения:
discriminant = b * b - 4 * a * c;
if (discriminant > 0)
{
root1 = (-b + sqrt(discriminant)) / (2 * a);
root2 = (-b - sqrt(discriminant)) / (2 * a);
printf("root1 = %.2lf and root2 = %.2lf", root1, root2);
}
else
if (discriminant == 0)
{
root1 = root2 = -b / (2 * a);
printf("root1 = root2 = %.2lf", root1);
}
else
{
realPart = -b / (2 * a);
imagPart = sqrt(-discriminant) / (2 * a);
printf("root1 = %.2lf+%.2lfi\nand root2 = %.2f-%.2fi", realPart, imagPart, realPart, imagPart);
}
printf("\n\n");
sleep(10);//пауза
return 0;
}

Если с/с++
Во-первых, логика. Есть вариант, при котором корни комплексные.
Комплексны они при D<0.
Тогда проверяем положительность дискриминанта, и говорим ответ.
Так же есть вариант, что у тебя не квадратно, а обычное уравнение - когда A =0.
Есть вариант, когда нет решений решений. Это есть у тебя A=B=0, C!=0.
Так же вариантик, при A=B=C=0 подразумевает, что решение - любое число
Воть эти 4 случая и надо реализовать. Если в C++, то код примерно так будет выглядеть:
#include cmath
#include iostream
using namespace std;
#include
#include
using namespace std;
int main()
{
setlocale(LC_ALL, "Russian"); // вкл. русский
double a = 0, b = 0, c = 0, D,x1,x2;
cout << "Введите число А: "; cin >> a;
cout << "Введите число B: "; cin >> b;
cout << "Введите число C: "; cin >> c;
if ((a==0) and (b==0) and (c!=0))
{
cout << "Решений нет";
}
else if ((a == 0) and (b == 0) and (c == 0))
{
cout << "Решением является любое число";
}
else if (a == 0)
{
cout << "x = " << -c / b;
}
else //через Дискриминант
{
D = b * b - 4 * a * c;
if (D < 0)
{
cout << "x1 = " << -b / (2 * a) << "+ i*" << pow(-D, 0.5) / (2 * a) << endl;
cout << "x2 = " << -b / (2 * a) << "- i*" << pow(-D, 0.5) / (2 * a) << endl;
}
else if (D == 0) //Случай D==0
{
cout << "x = " << -b / (2 * a);
}
else if (D > 0)
{
cout << "x1 = " << (-b + pow(D, 0.5)) / (2 * a);
cout << "x2 = " << (-b - pow(D, 0.5)) / (2 * a);
}
}
return 1;
}
Во-первых, логика. Есть вариант, при котором корни комплексные.
Комплексны они при D<0.
Тогда проверяем положительность дискриминанта, и говорим ответ.
Так же есть вариант, что у тебя не квадратно, а обычное уравнение - когда A =0.
Есть вариант, когда нет решений решений. Это есть у тебя A=B=0, C!=0.
Так же вариантик, при A=B=C=0 подразумевает, что решение - любое число
Воть эти 4 случая и надо реализовать. Если в C++, то код примерно так будет выглядеть:
#include cmath
#include iostream
using namespace std;
#include
#include
using namespace std;
int main()
{
setlocale(LC_ALL, "Russian"); // вкл. русский
double a = 0, b = 0, c = 0, D,x1,x2;
cout << "Введите число А: "; cin >> a;
cout << "Введите число B: "; cin >> b;
cout << "Введите число C: "; cin >> c;
if ((a==0) and (b==0) and (c!=0))
{
cout << "Решений нет";
}
else if ((a == 0) and (b == 0) and (c == 0))
{
cout << "Решением является любое число";
}
else if (a == 0)
{
cout << "x = " << -c / b;
}
else //через Дискриминант
{
D = b * b - 4 * a * c;
if (D < 0)
{
cout << "x1 = " << -b / (2 * a) << "+ i*" << pow(-D, 0.5) / (2 * a) << endl;
cout << "x2 = " << -b / (2 * a) << "- i*" << pow(-D, 0.5) / (2 * a) << endl;
}
else if (D == 0) //Случай D==0
{
cout << "x = " << -b / (2 * a);
}
else if (D > 0)
{
cout << "x1 = " << (-b + pow(D, 0.5)) / (2 * a);
cout << "x2 = " << (-b - pow(D, 0.5)) / (2 * a);
}
}
return 1;
}
Лёха Раскостов
попрвил одну ошибку. Теперь как надо работает
Пусть дано квадратное уравнение ax2 + bx + c = 0. Тогда дискриминант — это просто число D = b2 − 4ac.
Александр Огорельцев
Выпишем коэффициенты для первого уравнения и найдем дискриминант:
a = 1, b = −8, c = 12;
D = (−8)2 − 4 · 1 · 12 = 64 − 48 = 16Итак, дискриминант положительный, поэтому уравнение имеет два различных корня. Аналогично разбираем второе уравнение:
a = 5; b = 3; c = 7;
D = 32 − 4 · 5 · 7 = 9 − 140 = −131.Дискриминант отрицательный, корней нет. Осталось последнее уравнение:
a = 1; b = −6; c = 9;
D = (−6)2 − 4 · 1 · 9 = 36 − 36 = 0.Дискриминант равен нулю — корень будет один.
a = 1, b = −8, c = 12;
D = (−8)2 − 4 · 1 · 12 = 64 − 48 = 16Итак, дискриминант положительный, поэтому уравнение имеет два различных корня. Аналогично разбираем второе уравнение:
a = 5; b = 3; c = 7;
D = 32 − 4 · 5 · 7 = 9 − 140 = −131.Дискриминант отрицательный, корней нет. Осталось последнее уравнение:
a = 1; b = −6; c = 9;
D = (−6)2 − 4 · 1 · 9 = 36 − 36 = 0.Дискриминант равен нулю — корень будет один.
Viktor Kasavchenko
Откуда такая умная девчуха?)
Похожие вопросы
- Найти корни уравнений методом итераций
- Составить программу для нахождения корней уравнения
- Найти максимальный элемент в квадратной матрице и сказать под главной диагональю он находится или нет
- Найти решение уравнения(arccos(x-1)+x^3-4=0) на указанном диапазоне ([0.5;1.9]). используя численный метод-Метод Ньютона
- Помогите написать литсинг на C++ Дана целочисленная квадратная матрица. Определить: ↓↓↓
- Перевести математическое уравнение в С
- Набрать текст программы на языке (C++) реализующий уравнение
- Нужно составить программу для решения дифф. уравнений методом Рунге-Кутта
- В файле дана двухмерная матрица, сформировать одномерный массив длинной N из чётных элементов квадратной матрицы
- Помогите написать код решения уравнения, желательно на с++