虚心 求教
#include<iostream>
#include<cmath>
using namespace std;
class fenshu
{
public:
int fenzi,fenmu;
public:
fenshu(int zi=0,int mu=0)
{
fenzi=zi;
fenmu=mu;
}
void input()
{
cin>>fenzi;
cin>>fenmu;
}
void set(int zi,int mu)
{
fenzi=zi;
fenmu=mu;
}
void output()
{ if(fenzi*fenmu>=0)
cout<<"the fenshu is:"<<abs(fenzi)<<"/"<<abs(fenmu)<<endl;
else
cout<<"the fenshu is:"<<"-"<<abs(fenzi)<<"/"<<abs(fenmu)<<endl;
}
friend fenshu add(fenshu c1,fenshu c2);
friend fenshu sub(fenshu c1,fenshu c2);
friend fenshu mul(fenshu c1,fenshu c2);
friend fenshu div(fenshu c1,fenshu c2);
friend fenshu yuefen(fenshu c);
};
fenshu yuefen(fenshu c)
{
for(int i;i<c.fenzi;){
if(c.fenzi%i!=0&&c.fenmu%i!=0)
{
c.fenzi=c.fenzi/i;
c.fenmu=c.fenmu/i;
}
else
i++;
}
return c;
}
fenshu add(fenshu c1,fenshu c2)
{
fenshu c3;
c3.fenzi=c1.fenzi*c2.fenmu+c2.fenzi*c1.fenmu;
c3.fenmu=c1.fenmu*c2.fenmu;
return yuefen(c3);
}
fenshu sub(fenshu c1,fenshu c2)
{
fenshu c3;
c3.fenzi=c1.fenzi*c2.fenmu-c2.fenzi*c1.fenmu;
c3.fenmu=c1.fenmu*c2.fenmu;
return yuefen(c3);
}
fenshu mul(fenshu c1,fenshu c2)
{
fenshu c3;
c3.fenzi=c1.fenzi*c2.fenzi;
c3.fenmu=c1.fenmu*c2.fenmu;
return yuefen(c3);
}
fenshu div(fenshu c1,fenshu c2)
{
fenshu c3;
c3.fenzi=c1.fenzi*c2.fenmu;
c3.fenmu=c1.fenmu*c2.fenzi;
return yuefen(c3);
}
void menu()
{
cout<<"1 jiafa\n";
cout<<"2 jianfa\n";
cout<<"3 chengfa\n";
cout<<"4 chufa\n";
cout<<"0 tuichu\n";
cout<<"qing zuo nin de xuanze:"<<endl;
cout<<"输入 1,2,3,4,或0 然后回车"<<endl;
}
int main()
{
do{
menu();
int choose ;
fenshu c1,c2,c3;
cin>>choose;
switch(choose)
{
case 1: cout<<"输入你要输入的数"<<endl;
cout<<"格式为x按下空格键y 然后回车"<<endl;
c1.input();
cout<<"输入你要输入的数"<<endl;
cout<<"格式为x按下空格键y 然后回车"<<endl;
c2.input();
c3=add(c1,c2);
cout<<"c1+c2=";
c3.output();
break;
case 2:cout<<"输入你要输入的数"<<endl;
cout<<"格式为x按下空格键y 然后回车"<<endl;
c1.input();
cout<<"输入你要输入的数"<<endl;
cout<<"格式为x按下空格键y 然后回车"<<endl;
c2.input();
c3=sub(c1,c2);
cout<<"c1-c2=";
c3.output();
break;
case 3: cout<<"输入你要输入的数"<<endl;
cout<<"格式为x按下空格键y 然后回车"<<endl;
c1.input();
cout<<"输入你要输入的数"<<endl;
cout<<"格式为x按下空格键y 然后回车"<<endl;
c2.input();
c3=mul(c1,c2);
cout<<"c1*c2=";
c3.output();
break;
case 4: cout<<"输入你要输入的数"<<endl;
cout<<"格式为x按下空格键y 然后回车"<<endl;
c1.input();
cout<<"输入你要输入的数"<<endl;
cout<<"格式为x按下空格键y 然后回车"<<endl;
c2.input();
c3=mul(c1,c2);
cout<<"c1/c2=";
c3.output();
break;
case 0: exit(0);
default: cout<<"nin de xuanze cuo ,qing chongxin xuanze:";
}system("pause");system("cls");
}while(1);
return 0;
}
运行不出结果 错在哪?? 该怎么写啊??
[解决办法]
用来干嘛的?
问题描述清晰一些..
[解决办法]
你这是老婆娘臭脚带----又臭又长,谁敢看?
[解决办法]
对象c1,c2,c3都没生成,当然错啦!
在main函数了加上:
fenshu c1,c2,c3;
约分的函数有点复杂,不够简练,给你个建议:
先求分子分母的最大公约数(辗转相除法),然后分子分母同除以最大公约数.
[解决办法]
fenshu yuefen(fenshu c){for(int i;i<c.fenzi;){ if(c.fenzi%i!=0&&c.fenmu%i!=0){c.fenzi=c.fenzi/i;c.fenmu=c.fenmu/i;}elsei++;}return c;}