C++ C++;分数计算器不生成输出
这是我写的一个程序,它应该从一个数据文件中获取int和char数据,该文件对应于要加、减、乘或除的分数。但是,当使用适当的数据文件运行程序时,不会生成任何输出C++ C++;分数计算器不生成输出,c++,C++,这是我写的一个程序,它应该从一个数据文件中获取int和char数据,该文件对应于要加、减、乘或除的分数。但是,当使用适当的数据文件运行程序时,不会生成任何输出 #include <iostream> #include <iomanip> #include <cmath> using namespace std; void is_negative(int&,int&,int&,int&); void add(int&,i
#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;
}
}
#包括
#包括
#包括
使用名称空间std;
void为负(int&,int&,int&,int&,int&);
无效添加(int&,int&,int&,int&,int&,int&,int&);
void diff(int&,int&,int&,int&,int&,int&);
无效产品(int,int,int,int,int,int&,int&);
无效divi(int,int,int,int,int,int&,int&);
int main()
{
int n1、d1、n2、d2;
int n3,d3=0;
char op;//运算符
cin>>n1>>d1>>op>>n2>>d2;
while(cin)
{
为阴性(n1、d1、n2、d2);
如果((d1==0)| |(d2==0))
{
cout如果我只是按照预期的顺序输入数字和运算符,程序似乎打印得很好。我建议检查输入文件,看看它是否确实以您预期的格式发送。我认为您应该检查您的输入格式。按照上述代码,运算符和运算符应该用“”分隔或者输入字符
p/s:这些代码输出->错误的结果。您应该检查4个计算函数。您可能应该注释这些函数,因为它们非常混乱。如果您为分数定义一个数据结构,那么您可以编写分数x=add(分数1,分数2);
(如果这是学校作业,可能需要通过考试。)使用eclipse或Visual Studio,设置断点,并逐行遍历代码。您可以看到并观看它正在做什么