添加两个分数 [英] Add two fraction
问题描述
#include< iostream>
using namespace std;
class Fraction {
private:
int num;
int denom;
public:
Fraction(){
int num = 0;
int denom = 1;
}
Fraction(const Fraction& ref){
num = ref.num;
denom = ref.denom;
}
Fraction(int arg){
num = arg;
denom = 1;
}
Fraction(int arg,int arg2){
num = arg;
if(arg2 == 0)
denom = 1;
else
denom = arg2;
}
〜Fraction(){
}
void setnum(int arg){
num =
return;
}
void setdenom(int arg){
if(arg){
denom = arg;
} else {
denom = 1;
}
return;
}
int getnum()const {
return num;
}
int getdenom()const {
return denom;
}
};
分数加法(Fraction& Fraction&);
Fraction init(void);
void print(Fraction&);
void menu(void);
int main(){
menu();
return 0;
}
void menu(){
int option;
Fraction e;
Fraction f;
Fraction g;
cout<< 选项: ;
cin>>选项;
do {
switch(option){
case 1:
cout< 对于init:< endl;
e = init();
f = init();
menu();
break;
case 2:
cout<< For add:<< endl;
g = addition(e,f);
break;
case 3:
cout<< For print:< endl;
print(g);
break;
case 4:
cout<< bb<< endl;
break;
default:
cout<< 错误< endl;
}
} while(option!= 4);
return;
}
分数加法(Fraction& arg1,Fraction& arg2){
Fraction temp;
temp.setnum((arg1.getnum()* arg2.getdenom())+(arg1.getdenom()* arg2.getnum()));
temp.setdenom(arg1.getdenom()* arg2.getdenom());
return temp;
}
Fraction init(){
int num;
int denom;
cout<< num:;
cin>> num;
cout<< denom:;
cin>> ;
分数信息(num,denom);
返回信息;
}
void print(Fraction& info){
cout< num:< info.getnum()<< endl;
cout<< denom:< info.getdenom()<< endl;
return;
}
我正在让一个程序添加两个分数
我有3个选项的菜单:初始化,添加和打印
我的计划是:
首先,我选择init选项,然后输入两个分数
,然后我将回到菜单并选择选项添加以添加两个分数
,最后我选择打印打印结果
但是从上面的程序,麻烦从init选项
实际上我可以做输入,但是当我回到菜单,并添加,
添加不起作用
我认为它不工作,因为添加函数没有得到输入
$
对不起,因为我可怜的英语
菜单
函数被破坏。它只读取输入一次,然后永远循环(除非它 1
或 4
)。您应该在循环中读取选项
的值。并删除选项1中不必要的递归。
void menu(){
int option;
Fraction e;
Fraction f;
Fraction g;
do {
cout<< 选项: ;
cin>>选项;
switch(option){
case 1:
cout< 对于init:< endl;
e = init();
f = init();
// menu(); < - 删除
break;
case 2:
cout<< For add:<< endl;
g = addition(e,f);
break;
case 3:
cout<< For print:< endl;
print(g);
break;
case 4:
cout<< bb<< endl;
break;
default:
cout<< 错误< endl;
}
} while(option!= 4);
return;
}
#include <iostream>
using namespace std;
class Fraction {
private:
int num;
int denom;
public:
Fraction() {
int num = 0;
int denom = 1;
}
Fraction(const Fraction& ref) {
num = ref.num;
denom = ref.denom;
}
Fraction(int arg) {
num = arg;
denom = 1;
}
Fraction(int arg, int arg2) {
num = arg;
if (arg2 == 0)
denom = 1;
else
denom = arg2;
}
~Fraction() {
}
void setnum(int arg) {
num = arg;
return;
}
void setdenom(int arg) {
if(arg) {
denom = arg;
} else {
denom = 1;
}
return;
}
int getnum() const {
return num;
}
int getdenom() const {
return denom;
}
};
Fraction addition(Fraction&, Fraction&);
Fraction init(void);
void print(Fraction&);
void menu(void);
int main() {
menu();
return 0;
}
void menu() {
int option;
Fraction e;
Fraction f;
Fraction g;
cout << "option: ";
cin >> option;
do {
switch(option) {
case 1:
cout << "For init: " << endl;
e = init();
f = init();
menu();
break;
case 2:
cout << "For add: " << endl;
g = addition(e,f);
break;
case 3:
cout << "For print: " << endl;
print(g);
break;
case 4:
cout << "bb" << endl;
break;
default:
cout << "Wrong" << endl;
}
}while(option != 4);
return;
}
Fraction addition(Fraction& arg1, Fraction& arg2) {
Fraction temp;
temp.setnum((arg1.getnum() * arg2.getdenom()) + (arg1.getdenom() * arg2.getnum()));
temp.setdenom(arg1.getdenom() * arg2.getdenom());
return temp;
}
Fraction init() {
int num;
int denom;
cout << "num: ";
cin >> num;
cout << "denom: ";
cin >> denom;
Fraction info(num, denom);
return info;
}
void print(Fraction& info) {
cout << "num: " << info.getnum() << endl;
cout << "denom: " << info.getdenom() << endl;
return;
}
I am making a program to add two fraction
and I have menu for 3 option: initialization, addition and print
My plan is:
First I select the option init, and input two fractions
then I will go back to menu and select the option addition to add up two fractions
and at the last I select the option print to print the result
But from the above program, I always got trouble from the init option
actually I could do the input, but when I went back to menu and did the addition,
the addition won't work
I think it was not working because the addition function didn't get the input
So I want to ask how can I fix this?
Sorry for my poor English
The menu
function is broken. It reads the input only once and then cycles forever (unless it's 1
or 4
). You should read the option
value inside the loop. And remove the unnecessary recursion in option 1.
void menu() {
int option;
Fraction e;
Fraction f;
Fraction g;
do {
cout << "option: ";
cin >> option;
switch(option) {
case 1:
cout << "For init: " << endl;
e = init();
f = init();
// menu(); <-- Remove this
break;
case 2:
cout << "For add: " << endl;
g = addition(e,f);
break;
case 3:
cout << "For print: " << endl;
print(g);
break;
case 4:
cout << "bb" << endl;
break;
default:
cout << "Wrong" << endl;
}
}while(option != 4);
return;
}
这篇关于添加两个分数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!