Похожие презентации:
Применение вложенных инструкций if-else. Решение квадратного уравнения
1.
Применение вложенныхинструкций if-else.
Решение квадратного уравнения
Задача из курса “Основы разработки на C++: белый пояс”
www.coursera.org
Факультет электротехники и автоматики
2.
ЗаданиеНа вход вашей программы в стандартном
потоке ввода подаются действительные
коэффициенты A, B и C уравнения Ax² + Bx +
C = 0. Гарантируется, что хотя бы один из
коэффициентов уравнения не равен нулю.
Выведите все различные действительные
корни в поток вывода в любом порядке, при
этом разделяя корни пробелами.
2
3.
ПодсказкаДля
вычисления
квадратного
корня
используйте функцию sqrt из библиотеки
cmath. Чтобы подключить библиотеку, в
начале программы напишите
#include <cmath>
3
4.
4Блок-схема
Начало
Ввод
А, B, C
Вычисляем
дискриминант
D=B*B-4*A*C
Нет
Нет
D>0
D == 0
Да
Вывод
(-B + sqrt(D)) / (2 * A)
(-B - sqrt(D)) / (2 * A)
Да
A == 0
Да
Вывод
-B / (2 * A)
Нет
B != 0
Да
Вывод
-C / B
Конец
5.
РешениеДостаточно аккуратно рассмотреть и решить
уравнения, получающиеся в зависимости от
значений
коэффициентов
A,B,C
(квадратное
уравнение, линейное уравнение).
#include <iostream>
#include <cmath>
using namespace std;
int main() {
double A, B, C;
//ввод исходных данных
cin >> A >> B >> C;
// найдём дискриминант
double D = B * B - 4 * A * C;
5
6.
Решение (Продолжение 2)// если A равно нулю,
// то уравнение линейное: Bx + C = 0
if (A == 0) {
// Bx = -C => x = -C / B
if (B != 0) {
cout << -C / B << endl;
}
// если B равно нулю, корней нет
} else
6
7.
Решение (Продолжение 3)// случай с нулевым дискриминантом
if (D == 0) {
// корень один
cout << -B / (2 * A) << endl;
} else
7
8.
Решение (Продолжение 4)// в случае с положительным дискриминантом
// корня два
if (D > 0) {
double r1 = (-B + sqrt(D)) / (2 * A);
double r2 = (-B - sqrt(D)) / (2 * A);
cout << r1 << " " << r2 << endl;
}
// если дискриминант отрицателен,
// действительных корней нет
return 0;
}
8
9.
9Примеры для тестирования
stdin
252
242
212
0 4 10
stdout
-0.5 -2
-1
-2.5