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

//待解决:只适用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 << "方程无实根";
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值