C/c++ 字符串问题 高手进!!!

来源:百度知道 编辑:UC知道 时间:2024/05/18 15:52:15
我正在做一个对一元函数求根的问题:我想接收我在屏幕输入的函数公式,使其转化为c++语言。
例:
我在屏幕输入函数公式:3x^5-1/2x^2+2/3
使它能转化为c++语言:用一个int f来接收它:f=3*pow(x,5)-1/2*pow(x,2)+2/3.
注意,我要输入的函数公式是任意次幂的,上面的只是一个例子。
请大家把思路或代码写下,大家分享下!!!
xrayron 的答案可以解决这个问题,只是当x的系数为1时有错,主要是代码有点庞大,有没有更简单的代码。 xrayron是我好友确实用了心,我只是想看看还有没有更简单的方法,如果没有就是xrayron得了。

先输入表达式,然后输出则转换成你需要的式子,再输入X的值,最后输出表达式的值

例:
输入:4x^3-2/3x^2-1
输出:f=4*pow(x,3)-2/3*pow(x,2)-1
input x:
输入:2
输出:f=28.333333

#include <stdio.h>
#include <math.h>
#include <string.h>
double deal(double x, double multi, double y, double ans, char chars)
{
switch(chars)
{
case '+': x += multi*pow(ans, y); break;
case '-': x -= multi*pow(ans, y); break;
case '*': x *= multi*pow(ans, y); break;
case '/': x /= multi*pow(ans, y); break;
}
return x;
}
int main()
{
double multi[500] = {0}, y[500] = {0};
char *s = new char[1000], *res = new char[1000], *chars = new char[500];
scanf("%s", s);
s[strlen(s)] = '\0';
int flag = 0;
int temp1 = 0, temp2 = 0;
int pos1 = 0, pos2 = 0, pos3 = 0;
for(int i = 0,m = 0; i <= (int)strlen(s); i++, m++)
{