C++分数表达式加减运算实现

你的名字 2022-12-26 09:20 353阅读 0赞

C++11虽然有radio库,但用起来也没那么方便
代码简单易懂,就不注释了

  1. string fractionAddition(string expression) {
  2. expression.push_back('+');
  3. vector<int> fenzi;
  4. vector<int> fenmu;
  5. int i=expression[0]=='-'?0:-1,j=0;
  6. while(j<expression.size()){
  7. //cout<<i<<" "<<j<<endl;
  8. if(expression[j]=='/'){
  9. int t=atoi(expression.substr(i+1,j-i-1).c_str());
  10. if(i>=0&&expression[i]=='-') t*=-1;
  11. fenzi.push_back(t);
  12. i=j;
  13. }
  14. else if(expression[j]=='+'||(expression[j]=='-'&&j!=0)){
  15. fenmu.push_back(atoi(expression.substr(i+1,j-i-1).c_str()));
  16. i=j;
  17. }
  18. ++j;
  19. }
  20. int fm=1;
  21. int fz=0;
  22. for(int& f:fenmu) fm*=f;
  23. for(int i=0;i<fenzi.size();++i){
  24. //cout<<fenzi[i]<<" "<<fenmu[i]<<endl;
  25. fz+=fenzi[i]*fm/fenmu[i];
  26. }
  27. int _gcd=gcd(fz,fm); //gcd函数需要C++17版本
  28. //cout<<fz<<" "<<fm<<" "<<_gcd<<endl;
  29. return to_string(fz/_gcd)+"/"+to_string(fm/_gcd);
  30. }

发表评论

表情:
评论列表 (有 0 条评论,353人围观)

还没有评论,来说两句吧...

相关阅读

    相关 C++ 指针的运算

    首先明确几点: 1:涉及到数组的指针,若两指针指向的不是同一个数组,那么指针之间的加减运算是无意义的,因为得到的结果就是他们地址之间的差值。 2:指针变量加/减 一个整数,

    相关 592 分数运算(模拟)

    1. 问题描述: 给定一个表示分数加减运算表达式的字符串,你需要返回一个字符串形式的计算结果。 这个结果应该是不可约分的分数,即最简分数。 如果最终结果是一个整数,例如 2,