您的位置:首页 > 其它

不一样的一元二次方程求解

2018-03-17 10:27 211 查看
//待解决:只适用a,b,c,是一位数;必须按降幂排列;1次幂x 要输成x^1;
#include <iostream>
#include <string>
#include <cstring>
#include <math.h>
using namespace std;
void findabc();
void findsoln(float a, float b, float c);
char p[3];//数组存放a,b,c的值
char x[100] ="x^2+x^1+3=0";

void main()
{
cout << "请输入标准一元二次方程" << endl;
// scanf("%s", x);
cout << x << endl;
findabc();
findsoln(p[0], p[1], p[2]);
getchar();
}

void findabc()//寻a,b,c函数
{
char q[] = "x^2";//查找标志
char w[] = "x^1";
char e[] = "=";
string str1(x);//标志所在位置
string str2(q);
string str3(w);
string str4(e);
int i = str1.find(str2);
int j = str1.find(str3);
int k = str1.find(str4);
float a, b, c;

if (i == 0)//取a的值
a = 1;
else
{
if (x[i - 1] == '-')
a = -1;
if (x[i - 1] - 48 > 0)
a = x[i - 1] - 48;
if (x[i - 1] - 48 > 0 || x[i - 2] == '-')
a = 48 - x[i - 1];
}
if (x[j - 1] == '+')//取b的值
b = 1;
if (x[j - 1] == '-')
b = -1;
if (x[j - 1] - 48 > 0)
b = x[j - 1] - 48;

if (x[k - 2] == '+')//取c的值
c = x[k - 1] - 48;
if (x[k - 2] == '-')
c = 48 - x[k - 1];
p[0] =a;//把值存到数组里
p[1] =b;
p[2] =c;
}

void findsoln(float a,float b,float c)//寻根函数
{
float x1, x2;
float △ = pow(b, 2) - 4 * a*c;
if (△ > 0)
{
x1 = (-b + sqrt(pow(b, 2) - 4 * a*c)) / (2 * a);
x2 = (-b - sqrt(pow(b, 2) - 4 * a*c)) / (2 * a);
cout << "x1=" << x1 << endl << "x2=" << x2;
}
if (△ == 0)
{
x1 = (-b + sqrt(pow(b, 2) - 4 * a*c)) / (2 * a);
cout << "x1=" << "x2=" << x1;
}
if (△ < 0)
{
cout << "方程无实根";
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: