C ++ Fraction Calculator不生成输出

时间:2015-04-13 04:09:43

标签: c++

这是我编写的程序,它应该从对应于要添加,减去,相乘或分割的分数的数据文件中获取int和char数据。但是,使用适当的数据文件运行程序时不会生成任何输出。

#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;

void is_negative(int&,int&,int&,int&);
void add(int&,int&,int&,int&,int&,int&);
void diff(int&,int&,int&,int&,int&,int& );
void produ(int,int,int,int,int&,int&);
void divi(int,int,int,int,int&,int&);

      int main()
      {
        int n1,d1,n2,d2;
        int n3,d3 = 0;
        char op; //operator

        cin >> n1 >> d1 >> op >> n2 >> d2;

        while(cin)
          {
            is_negative(n1,d1,n2,d2);

        if((d1 == 0 )||(d2 == 0)) 
          {
            cout << n1 <<  "/" << d1 << " " << op << " " << n2 << "/" << d2 << " = cannot evaluate, 1 or both fractions are invalid" << endl;
          }

        else if(op == '+')
          {
            cout << n1 <<  "/" << d1 << " " << op << " " << n2 << "/" << d2 << " = " << endl;
            add(n1,d1,n2,d2,n3,d3);
          }
        else if(op == '-')
          {
            cout << n1 <<  "/" << d1 << " " << op << " " << n2 << "/" << d2 << " = " << endl;
            diff(n1,d1,n2,d2,n3,d3);
          }
        else if(op == '*')
          {
            cout << n1 <<  "/" << d1 << " " << op << " " << n2 << "/" << d2 << " = " << endl;
            produ(n1,d1,n2,d2,n3,d3);
          }
        else if(op == '/')
          {
            cout << n1 <<  "/" << d1 << " " << op << " " << n2 << "/" << d2 << " = " << endl;
            divi(n1,d1,n2,d2,n3,d3);
          }

        cin >> n1 >> d1 >> op >> n2 >> d2;
          }
        return 0;
 }

void is_negative(int& n1, int& d1, int& n2, int& d2)
{
  if(d1 < 0)
    {
      d1 = -2 * d1;
      n1 = -1 * n1;
    }
  if(d2 < 0)
    {
      d2 = -1 * d2;
      n2 = -1 * n2;
    }
}

void add(int& n1, int& d1, int& n2, int& d2, int& n3, int& d3)
{

  d1 = d1 * d2;
  d2 = d2 * d1;
  n1 = n1 * d2;
  n2 = n2 * d1;
  n3 = n1 + n2;
  d3 = d2;

   cout << n3 << "/" << d3 << endl;

}
void diff(int& n1, int& d1, int& n2, int& d2, int& d3, int& n3)
{
  d1 = d1 * d2;
  d2 = d2 * d1;
  n1 = n1 * d2;
  n2 = n2 * d1;
  n3 = n1 - n2;
  d3 = d2;

   cout << n3 << "/" << d3 << endl;

}
void produ(int n1, int d1, int n2, int d2, int& n3, int& d3)
{
  n3 = n1 * n2;
  d3 = d1 * d2;

  cout << n3 << "/" << d3 << endl;
}

void divi(int n1, int d1, int n2, int d2, int& n3, int& d3)
{
  if(n2 != 0) 
    {
      n3 = n1 * d2;
      d3 = d1 * n2;
      cout << n3 << "/" << d3 << endl;
    }

  else
    {
      cout << "division by 0 is not defined" << endl;
    }
}

我希望这个程序生成输出语句,因为输入的所有数据都将转到四个计算器函数之一,所有这些都以print语句结束。我错过了什么?

谢谢!

2 个答案:

答案 0 :(得分:1)

如果我只按预期顺序输入数字和运算符,程序似乎打印正常。我建议检查输入文件,看看它是否确实以你期望的格式发送它

答案 1 :(得分:1)

我认为您应该检查输入格式。遵循上述代码,操作员和操作应由&#34; &#34;或输入字符。

P / s:这些代码输出 - &gt;错误的结果。你应该检查4个计算函数。