Символы кириллицы выводит некорректно. Как сделать чтобы выводился читабельный текст на русском языке? Тип приложения - не Qt, Qt Creator 4.5.0 основан на Qt 5.10.0. Win7.
|
Опубликован: 07.03.2015 | Уровень: для всех | Доступ: свободно | ВУЗ: Компания ALT Linux
Лекция 3:
Операторы управления
Задача 3.7. Заданы коэффициенты и биквадратного уравнения . Найти все его действительные корни.
Входные данные: .
Выходные данные: .
Для решения биквадратного уравнения необходимо заменой привести его к квадратному уравнению и решить это уравнение.
Опишем алгоритм решения этой задачи (рис. 3.18):
- Ввод коэффициентов биквадратного уравнения и (блок 1).
- Вычисление дискриминанта уравнения (блок 2).
- Если d < 0 (блок 3), вывод сообщения, что корней нет (блок 4), а иначе определяются корни соответствующего квадратного уравнения y1 и y2(блок 5).
- Если y1 < 0 и y2 < 0 (блок 6), то вывод сообщения, что корней нет (блок 7).
- Если y1 >= 0 и y2 >= 0 (блок 8), то вычисляются четыре корня по формулам (блок 9) и выводятся значения корней (блок 10).
- Если условия 4) и 5) не выполняются, то необходимо проверить знак y1. Если y1 >= 0 (блок 11), то вычисляются два корня по формуле (блок 12), иначе (если y2 >= 0) вычисляются два корня по формуле (блок 13). Вывод вычисленных значений корней (блок 14).
Текст программы решения биквадратного уравнения приведён ниже.
Внимание! Если в условном операторе проверяется двойное условие, необходимо применять логические операции ||, &&, !.Например, условие "если y1 и y2 положительны" правильно записать так: if (y1>=0 && y2>=0).
#include <iostream> #include <math.h> using namespace std; int main ( ) { //Описание переменных: //a, b, c - коэффициенты биквадратного уравнения, //d - дискриминант, // x1, x2, x3, x4 - корни биквадратного уравнения, //y1, y2 - корни квадратного уравнения ay^2+by+c =0, float a, b, c, d, x1, x2, x3, x4, y1, y2; //Ввод коэффициентов уравнения. cout<<" a = "; cin >>a; cout<<" b = "; cin >>b; cout<<" c = "; cin >>c; d=b* b-4*a*c; //Вычисление дискриминанта. if ( d<0) //Если дискриминант отрицательный, вывод сообщения "Корней нет". cout<<" Нет действительных корней \ n "; else //Если дискриминант положительный, { //Вычисление корней соответствующего квадратного уравнения . y1=( -b+sqrt ( d ) ) /2/ a; y2=( -b- sqrt ( d ) ) /(2 * a ); //Если оба корня квадратного уравнения отрицательные, if ( y1<0 && y2<0) //вывод сообщения "Корней нет" cout<<" Нет действительных корней \ n "; //Если оба корня квадратного уравнения положительные, else if ( y1>=0 && y2>=0) { //Вычисление четырёх корней биквадратного уравнения x1=sqrt ( y1 ); x2=-x1; x3=sqrt ( y2 ); x4=- sqrt ( y2 ); //Вывод корней уравнения на экран . cout<<" \t X1 = "<<x1<<" \t X2 = "<<x2; cout<<" \t X3 = "<<x3<<" \t X4 = "<<x4<<" \n "; } //Если не выполнились условия // 1.y1<0 и y2<0 // 2.y1>=0 и y2>=0, //то проверяем условие y1>=0. else if ( y1>=0) //Если оно истинно { //вычисляем два корня биквадратного уравнения. x1=sqrt ( y1 ); x2=-x1; cout<<" X1 = "<<x1<<" \t X2 = "<<x2<<" \n "; } else { //Если условие y1>=0 ложно, то вычисляем два корня биквадратного уравнения x1=sqrt ( y2 ); x2=-x1; cout<<" X1 = "<<x1<<" \t X2 = "<<x2<<" \n "; } } return 0; }
Читателю предлагается самостоятельно модифицировать программу таким образом, чтобы она находила все корни (как действительные, так и комплексные) биквадратного уравнения.