Символы кириллицы выводит некорректно. Как сделать чтобы выводился читабельный текст на русском языке? Тип приложения - не Qt, Qt Creator 4.5.0 основан на Qt 5.10.0. Win7.
|
Операторы управления
Задача 3.4. Написать программу решения квадратного уравнения .
Исходные данные: вещественные числа и — коэффициенты квадратного уравнения.
Результаты работы программы: вещественные числа и — корни квадратного уравнения либо сообщение о том, что корней нет.
Вспомогательные переменные: вещественная переменная , в которой будет храниться дискриминант квадратного уравнения.
Составим словесный алгоритм решения этой задачи.
- Начало алгоритма.
- Ввод числовых значений переменных и .
- Вычисление значения дискриминанта по формуле .
- Если , то переход к п.5, иначе переход к п.6.
- Вывод сообщения "Действительных корней нет" и переход к п.8.
- Вычисление корней и .
- Вывод значений и на экран.
- Конец алгоритма.
Блок-схема, соответствующая этому описанию, представлена на рис. 3.15.
Текст программы, которая реализует решение квадратного уравнения:
#include <iostream> #include <math.h> using namespace std; int main ( ) { float a, b, c, d, x1, x2; //Ввод значений коэффициентов квадратного уравнения. cout<<" a = "; cin >>a; cout<<" b = "; cin >>b; cout<<" c = "; cin >>c; d=b*b-4*a*c; //Вычисление дискриминанта. if (d<0) //Если дискриминант отрицательный, то вывод сообщения, о том что действительных корней нет, cout<<"Нет действительных корней"; else { //иначе вычисление действительных корней x1=( -b+sqrt (d) ) /2/a; x2=( -b-sqrt (d) ) /(2 * a); //и вывод их значений. cout<<" X1 = "<<x1<<" \t X2 = "<<x2<<" \n "; } return 0; }
Задача 3.5. Составить программу нахождения действительных и комплексных корней квадратного уравнения .
Исходные данные: вещественные числа a, b и c — коэффициенты квадратного уравнения.
Результаты работы программы: вещественные числа и — действительные корни квадратного уравнения либо и — действительная и мнимая части комплексных корней квадратного уравнения.
Вспомогательные переменные: вещественная переменная , в которой будет храниться дискриминант квадратного уравнения.
Можно выделить следующие этапы решения задачи:
- Ввод коэффициентов квадратного уравнения и .
- Вычисление дискриминанта по формуле .
- Проверка знака дискриминанта. Если , то вычисление действительных корней: и и вывод их на экран. При отрицательном дискриминанте выводится сообщение о том, что действительных корней нет, и вычисляются комплексные корни2Комплексные числа записываются в виде , где — действительная часть комплекс-ного числа, — мнимая часть комплексного числа, — мнимая единица . Подробно о комплексных числах можно прочитать в главе 9. .
У обоих комплексных корней действительные части одинаковые, а мнимые отличаются знаком. Поэтому можно в переменной хранить действительную часть числа , в переменной — модуль мнимой части , а в качестве корней вывести и .
На рис. 3.16 изображена блок-схема решения задачи. Блок 1 предназначен для ввода коэффициентов квадратного уравнения. В блоке 2 осуществляется вычисление дискриминанта. Блок 3 осуществляет проверку знака дискриминанта, если дискриминант отрицателен, то корни комплексные, их расчёт происходит в блоке 4 (действительная часть корня записывается в переменную , модуль мнимой — в переменную ), а вывод — в блоке 5 (первый корень , второй — ). Если дискриминант положителен, то вычисляются действительные корни уравнения (блок 6) и выводятся на экран (блок 7).
Текст программы, реализующей поставленную задачу:
#include <iostream> #include <math.h> using namespace std; int main ( ) { float a, b, c, d, x1, x2; cout<<" a = "; cin>>a; cout<<" b = "; cin>>b; cout<<" c = "; cin>>c; d=b*b-4*a*c; if (d<0) { //Если дискриминант отрицательный, то вывод соответствующего сообщения. cout<<"Нет вещественных корней \n "; x1=-b/(2 * a ); //Вычисление действительной части комплексных корней. x2=sqrt ( fabs (d) ) /(2 * a ); //Вычисление модуля мнимой части комплексных корней //Сообщение о комплексных корнях уравнения вида ax2 + bx + c = 0. cout<<"Комплексные корни уравнения \n "; cout<<a<<" x ^2+ "<<b<<" x + "<<c<<" =0 \n "; //Вывод значений комплексных корней в виде x1 + ix2, x1 - ix2 if ( x2>=0) { cout<<x1<<" + "<<x2<<" i \t "; cout<<x1<<" -"<<x2<<" i \n "; } else { cout<<x1<<" -"<<abs ( x2 )<<" i \t "; cout<<x1<<" + "<<abs ( x2 )<<" i \n "; } } else { //Если дискриминант положительный, вычисление действительных корней и вывод их на экран. x1=( -b+sqrt (d) ) /2/a; x2=( -b- sqrt (d) ) /(2 * a ); cout<<"Вещественные корни уравнения \n "; cout<<a<<" x ^2+ "<<b<<" x + "<<c<<" =0 \n "; cout<< X1 = "<<x1<<" \t X2 = "<<x2<<" \n "; } return 0; }
Результаты работы программы к задаче 3.5 показаны ниже.
a=-5 b=-3 c=-4 Нет вещественных корней Комплексные корни уравнения -5x^2+-3x+-4=0 -0.3-0.842615i -0.3+0.842615i ============================== a=2 b=-3 c=1 Вещественные корни уравнения 2x^2+-3x+1=0 X1=1 X2=0.5