四则运算

博客班级 https://edu.cnblogs.com/campus/ahgc/AHPU-SE-19/
作业要求 https://edu.cnblogs.com/campus/ahgc/AHPU-SE-19/homework/11376
作业目标 写一个能自动生成四则运算题目的程序
学号 3190704116

源代码:

include

include <stdlib.h>

using namespace std;

float data1, data2;

struct Number
{
int up, down;
};

int commonDivisor(int a, int b)//求出最大公约数
{
int k = 2;
int cD = 1;
while (k <= a && k <= b)
{
if (a % k == 0 && b % k == 0)
{
cD = k;
}
k++;
}
return cD;
}

Number simplification(Number n)//分数的简化
{
if (n.down < 0)//分母小于0,则将其转化在分子上
{
n.up = -n.up;
n.down = -n.down;
}
if (n.up==0)
{
n.down = 1;
}
else {
int common = commonDivisor(abs(n.up),abs(n.down));
n.up = n.up / common;
n.down = n.down / common;
}
return n;
}

void showIt(Number n)
{
Number result = simplification(n);
cout << result.up << "/" << result.down << endl;
}

void showAllData(Number *dataList)
{
cout << "以有分数如下:" << endl;
for (int i=0;i<2;i++)
{
cout << "\t" << i + 1 << ":";
showIt(dataList[i]);
}
}

Number addFunction1(Number data1,Number data2)//分数的加法
{
Number num, result;
num.up = data1.up * data2.down + data2.up * data1.down;
num.down = data1.down * data2.down;
result = simplification(num);
return result;
}

Number subFunction1(Number data1, Number data2)//分数的减法
{
Number result;
result.up = data1.up * data2.down - data1.down * data2.up;
result.down = data1.down * data2.down;
return simplification(result);
}

Number multiplyFunction1(Number data1,Number data2)//分数的乘法
{
Number result;
result.up = data1.up * data2.up;
result.down = data1.down * data2.down;
return simplification(result);
}

Number divideFunction1(Number data1, Number data2)//分数的除法
{
Number result;
result.up = data1.up * data2.down;
result.down = data1.down * data2.up;
return simplification(result);
}

void inputData2(Number *dataList)
{
for (int i = 0; i < 2; i++)
{
cout <<endl<< "请输入第" << i + 1 << "个分数的分子:";
cin >> dataList[i].up;
cout << "请输入第" << i + 1 << "个分数的分母:";
cin >> dataList[i].down;
}
showAllData(dataList);
}

float addFunction(float a, float b)
{
return a + b;
}

float subFunction(float a, float b)
{
return a - b;
}

float multiplyFunction(float a, float b)
{
return a * b;
}

float divideFunction(float a, float b)
{
return a / b;
}

void inputDate1()
{
cout << "请输入第一个数据:";
cin >> data1;
cout << "请输入第二个数据:";
cin >> data2;
}

int main()
{
int choose,n=1,x;
while (n)
{
cout << "两种计算形式" << endl
<< "1.实数计算" << endl
<< "2.分数计算" << endl;
cout << "请选择计算形式:";
cin >> choose;
switch (choose)
{
case 1:x = 1; n = 0;
break;
case 2:x = 2; n = 0;
break;
default:cout << "输入错误,请重新输入!" << endl;
break;
}
}

if (x == 1)
{
	int n1 = 1, choose1;
	while (n1)
	{
		
		cout << "							" << endl
			<< "\t\t	C++实现四则运算	" << endl
			<< "\t\t|1.请输入想要计算的数字	\t|" << endl
			<< "\t\t|2.实数加法		\t|" << endl
			<< "\t\t|3.减法			\t|" << endl
			<< "\t\t|4.乘法			\t|" << endl
			<< "\t\t|5.除法			\t|" << endl
			<< "\t\t|0.退出程序!		\t|" << endl;
		cout << "请选择以上功能:";
		cin >> choose1;
		switch (choose1)
		{
		case 1:inputDate1();
			break;
		case 2:cout << "两数的和为:" << addFunction(data1, data2) << endl;
			break;
		case 3:cout << "两数的差为:" << subFunction(data1, data2) << endl;
			break;
		case 4:cout << "两数的积为:" << multiplyFunction(data1, data2) << endl;
			break;
		case 5:cout << "两数的商为:" << divideFunction(data1, data2) << endl;
			break;
		case 0:n1 = 0;
			break;
		default:cout << "输入错误,请重新输入!" << endl;
			break;

		}
	}
}

if (x == 2)
{
	Number *dataList = new Number[2];
	Number result;
	int n2 = 1, choose2;
	while (n2)
	{
		cout << "							" << endl
			<< "\t\t	C++实现四则运算	" << endl
			<< "\t\t|1.请输入想要计算的数字	\t|" << endl
			<< "\t\t|2.分数加法		\t|" << endl
			<< "\t\t|3.减法			\t|" << endl
			<< "\t\t|4.乘法			\t|" << endl
			<< "\t\t|5.除法			\t|" << endl
			<< "\t\t|0.退出程序!		\t|" << endl;
		cout << "请选择以上功能:";
		cin >> choose2;
		switch (choose2)
		{
		case 1:inputData2(dataList);
		case 2:result = addFunction1(dataList[0], dataList[1]);
			cout << "相加后得到:";
			showIt(result);
		case 3:result = subFunction1(dataList[0], dataList[1]);
			cout << "相减后得到:";
			showIt(result);
		case 4:result = multiplyFunction1(dataList[0], dataList[1]);
			cout << "相乘后得到:";
			showIt(result);
		case 5:result = divideFunction1(dataList[0], dataList[1]);
			cout << "相除后得到:";
			showIt(result);
		case 0:n2 = 0;
		}
	}
	free(dataList);
}

}

运行结果:





posted @ 2020-10-27 23:34  Autumn_Lee  阅读(106)  评论(0编辑  收藏  举报