【问题标题】:Split mathemtical function using signs in c++ [duplicate]使用c ++中的符号拆分数学函数[重复]
【发布时间】:2018-04-23 09:10:24
【问题描述】:

我想通过其中变量的符号来拆分数学函数,如下所示:

string input = x-5y+3z=10

output--> [x,-5y,+3z,=10]

我曾经使用 input.split() 函数在 java 上执行此操作,但因为我是 c++ 初学者,所以我找不到像在 java 中那样执行此操作的方法。

有什么帮助吗?

编辑:

很长一段时间后,我找到了我想要的解决方案,也许它不是理想的解决方案,它可能会有更多改进,但正如我之前所说,我仍然是 c++ 的初学者,这就是它 ->

std::string fun="-x1+2x2=10.";

std::string *arr=new std::string[20];
int index=0;

for (int i=0; i<=20; i++){
    if(fun[index]=='.'){
        break;
    }
    for(int j=index; j<fun.length(); j++){
    if(fun[j]=='+' || fun[j]=='-' || fun[j]=='='|| fun[j]== '.'){
        if(j!=index){
        arr[i]=fun.substr(index,(j-index));
        index=j;
        std::cout<<"term is : "<<arr[i]<<"\t index is : "<<index<<"\t j is : "<<j<<std::endl;
         break;
        }
    }
  }

输出是->

term is : -x1    index is : 3    j is : 3
term is : +2x2   index is : 7    j is : 7
term is : =10    index is : 10   j is : 10

如果有任何改进建议请说。

【问题讨论】:

  • 只需迭代输入字符串,每当遇到运算符时,只需提取运算符及其后面的数字。

标签: c++ math split delimiter mathematical-expressions


【解决方案1】:

扫描字符串,直到找到'+''-''=' 之一或到达末尾。存储命中的索引(包括0len-1),这将分隔子字符串。

要处理第一个术语,请注意,如果它确实有符号,则第一个子字符串将为空。

x-5y+3z=10
 ^  ^  ^
|x|-5y|+3z|=10|


-x-5y+3z=10
^ ^  ^  ^
||-x|-5y|+3z|=10|

【讨论】:

  • 你能写出这样的代码吗?!
  • 顺便说一句,没有人在这里编写您的代码。所以千万不要在不付出任何努力的情况下发布这样的东西。
  • 我花了 2 个多小时试图通过您的建议解决它,我已经解决了它,我想发布我的答案,但我在此页面中找不到按钮:)我想看看他的代码来比较我的解决方案和他的解决方案。
  • @MohamedEssam:这需要一个 for 循环、一个 switch 语句和一个赋值,就是这样。
  • 我猜你还没有足够的声望点来提交答案。如果你想发布你的代码,也许你可以编辑你的帖子并在最后追加。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-09-05
  • 2018-02-11
  • 2021-07-28
  • 1970-01-01
  • 2023-03-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多