一个四则运算出题机

老师给我们的作业,写完以后觉得很有意思,有兴趣的人可以试着玩玩

#include <iostream>
#include <algorithm>
#include <ctime>
#include <cstdlib>
#include <vector>
#include <fstream>
#include <string>
#include <sstream>
#include <cstdlib>

class problem {
public:
	double a[4];
	char fuhao[3];
	double anwser = 0;
};
//C:\Users\LEGION\Desktop

using namespace std;
vector<problem> pvec;
int num[10];

char func1(int check)
{
	if (check <= num[2])
		return '+';
	else if (check > num[2] && check <= num[3])
		return '-';
	else if (check > num[3] && check <= num[4])
		return '*';
	else if (check > num[4] && check <= num[5])
		return '/';
}

double func2(problem tmp)
{
	if (tmp.fuhao[0] == '+')
	{
		if (tmp.fuhao[1] == '+')
		{
			if (tmp.fuhao[2] == '+')
				tmp.anwser = tmp.a[0] + tmp.a[1] + tmp.a[2] + tmp.a[3];
			else if (tmp.fuhao[2] == '-')
				tmp.anwser = tmp.a[0] + tmp.a[1] + tmp.a[2] - tmp.a[3];
			else if (tmp.fuhao[2] == '*')
				tmp.anwser = tmp.a[0] + tmp.a[1] + tmp.a[2] * tmp.a[3];
			else if (tmp.fuhao[2] == '/')
				tmp.anwser = tmp.a[0] + tmp.a[1] + tmp.a[2] / tmp.a[3];
		}
		else if (tmp.fuhao[1] == '-')
		{
			if (tmp.fuhao[2] == '+')
				tmp.anwser = tmp.a[0] + tmp.a[1] - tmp.a[2] + tmp.a[3];
			else if (tmp.fuhao[2] == '-')
				tmp.anwser = tmp.a[0] + tmp.a[1] - tmp.a[2] - tmp.a[3];
			else if (tmp.fuhao[2] == '*')
				tmp.anwser = tmp.a[0] + tmp.a[1] - tmp.a[2] * tmp.a[3];
			else if (tmp.fuhao[2] == '/')
				tmp.anwser = tmp.a[0] + tmp.a[1] - tmp.a[2] / tmp.a[3];
		}
		else if (tmp.fuhao[1] == '*')
		{
			if (tmp.fuhao[2] == '+')
				tmp.anwser = tmp.a[0] + tmp.a[1] * tmp.a[2] + tmp.a[3];
			else if (tmp.fuhao[2] == '-')
				tmp.anwser = tmp.a[0] + tmp.a[1] * tmp.a[2] - tmp.a[3];
			else if (tmp.fuhao[2] == '*')
				tmp.anwser = tmp.a[0] + tmp.a[1] * tmp.a[2] * tmp.a[3];
			else if (tmp.fuhao[2] == '/')
				tmp.anwser = tmp.a[0] + tmp.a[1] * tmp.a[2] / tmp.a[3];
		}
		else if (tmp.fuhao[1] == '/')
		{
			if (tmp.fuhao[2] == '+')
				tmp.anwser = tmp.a[0] + tmp.a[1] / tmp.a[2] + tmp.a[3];
			else if (tmp.fuhao[2] == '-')
				tmp.anwser = tmp.a[0] + tmp.a[1] / tmp.a[2] - tmp.a[3];
			else if (tmp.fuhao[2] == '*')
				tmp.anwser = tmp.a[0] + tmp.a[1] / tmp.a[2] * tmp.a[3];
			else if (tmp.fuhao[2] == '/')
				tmp.anwser = tmp.a[0] + tmp.a[1] / tmp.a[2] / tmp.a[3];
		}
	}
	else if (tmp.fuhao[0] == '-')
	{
		if (tmp.fuhao[1] == '+')
		{
			if (tmp.fuhao[2] == '+')
				tmp.anwser = tmp.a[0] - tmp.a[1] + tmp.a[2] + tmp.a[3];
			else if (tmp.fuhao[2] == '-')
				tmp.anwser = tmp.a[0] - tmp.a[1] + tmp.a[2] - tmp.a[3];
			else if (tmp.fuhao[2] == '*')
				tmp.anwser = tmp.a[0] - tmp.a[1] + tmp.a[2] * tmp.a[3];
			else if (tmp.fuhao[2] == '/')
				tmp.anwser = tmp.a[0] - tmp.a[1] + tmp.a[2] / tmp.a[3];
		}
		else if (tmp.fuhao[1] == '-')
		{
			if (tmp.fuhao[2] == '+')
				tmp.anwser = tmp.a[0] - tmp.a[1] - tmp.a[2] + tmp.a[3];
			else if (tmp.fuhao[2] == '-')
				tmp.anwser = tmp.a[0] - tmp.a[1] - tmp.a[2] - tmp.a[3];
			else if (tmp.fuhao[2] == '*')
				tmp.anwser = tmp.a[0] - tmp.a[1] - tmp.a[2] * tmp.a[3];
			else if (tmp.fuhao[2] == '/')
				tmp.anwser = tmp.a[0] - tmp.a[1] - tmp.a[2] / tmp.a[3];
		}
		else if (tmp.fuhao[1] == '*')
		{
			if (tmp.fuhao[2] == '+')
				tmp.anwser = tmp.a[0] - tmp.a[1] * tmp.a[2] + tmp.a[3];
			else if (tmp.fuhao[2] == '-')
				tmp.anwser = tmp.a[0] - tmp.a[1] * tmp.a[2] - tmp.a[3];
			else if (tmp.fuhao[2] == '*')
				tmp.anwser = tmp.a[0] - tmp.a[1] * tmp.a[2] * tmp.a[3];
			else if (tmp.fuhao[2] == '/')
				tmp.anwser = tmp.a[0] - tmp.a[1] * tmp.a[2] / tmp.a[3];
		}
		else if (tmp.fuhao[1] == '/')
		{
			if (tmp.fuhao[2] == '+')
				tmp.anwser = tmp.a[0] - tmp.a[1] / tmp.a[2] + tmp.a[3];
			else if (tmp.fuhao[2] == '-')
				tmp.anwser = tmp.a[0] - tmp.a[1] / tmp.a[2] - tmp.a[3];
			else if (tmp.fuhao[2] == '*')
				tmp.anwser = tmp.a[0] - tmp.a[1] / tmp.a[2] * tmp.a[3];
			else if (tmp.fuhao[2] == '/')
				tmp.anwser = tmp.a[0] - tmp.a[1] / tmp.a[2] / tmp.a[3];
		}
	}
	else if (tmp.fuhao[0] == '*')
	{
	if (tmp.fuhao[1] == '+')
	{
		if (tmp.fuhao[2] == '+')
			tmp.anwser = tmp.a[0] * tmp.a[1] + tmp.a[2] + tmp.a[3];
		else if (tmp.fuhao[2] == '-')
			tmp.anwser = tmp.a[0] * tmp.a[1] + tmp.a[2] - tmp.a[3];
		else if (tmp.fuhao[2] == '*')
			tmp.anwser = tmp.a[0] * tmp.a[1] + tmp.a[2] * tmp.a[3];
		else if (tmp.fuhao[2] == '/')
			tmp.anwser = tmp.a[0] * tmp.a[1] + tmp.a[2] / tmp.a[3];
	}
	else if (tmp.fuhao[1] == '-')
	{
		if (tmp.fuhao[2] == '+')
			tmp.anwser = tmp.a[0] * tmp.a[1] - tmp.a[2] + tmp.a[3];
		else if (tmp.fuhao[2] == '-')
			tmp.anwser = tmp.a[0] * tmp.a[1] - tmp.a[2] - tmp.a[3];
		else if (tmp.fuhao[2] == '*')
			tmp.anwser = tmp.a[0] * tmp.a[1] - tmp.a[2] * tmp.a[3];
		else if (tmp.fuhao[2] == '/')
			tmp.anwser = tmp.a[0] * tmp.a[1] - tmp.a[2] / tmp.a[3];
	}
	else if (tmp.fuhao[1] == '*')
	{
		if (tmp.fuhao[2] == '+')
			tmp.anwser = tmp.a[0] * tmp.a[1] * tmp.a[2] + tmp.a[3];
		else if (tmp.fuhao[2] == '-')
			tmp.anwser = tmp.a[0] * tmp.a[1] * tmp.a[2] - tmp.a[3];
		else if (tmp.fuhao[2] == '*')
			tmp.anwser = tmp.a[0] * tmp.a[1] * tmp.a[2] * tmp.a[3];
		else if (tmp.fuhao[2] == '/')
			tmp.anwser = tmp.a[0] * tmp.a[1] * tmp.a[2] / tmp.a[3];
	}
	else if (tmp.fuhao[1] == '/')
	{
		if (tmp.fuhao[2] == '+')
			tmp.anwser = tmp.a[0] * tmp.a[1] / tmp.a[2] + tmp.a[3];
		else if (tmp.fuhao[2] == '-')
			tmp.anwser = tmp.a[0] * tmp.a[1] / tmp.a[2] - tmp.a[3];
		else if (tmp.fuhao[2] == '*')
			tmp.anwser = tmp.a[0] * tmp.a[1] / tmp.a[2] * tmp.a[3];
		else if (tmp.fuhao[2] == '/')
			tmp.anwser = tmp.a[0] * tmp.a[1] / tmp.a[2] / tmp.a[3];
	}
	}
	else if (tmp.fuhao[0] == '/')
	{
	if (tmp.fuhao[1] == '+')
	{
		if (tmp.fuhao[2] == '+')
			tmp.anwser = tmp.a[0] / tmp.a[1] + tmp.a[2] + tmp.a[3];
		else if (tmp.fuhao[2] == '-')
			tmp.anwser = tmp.a[0] / tmp.a[1] + tmp.a[2] - tmp.a[3];
		else if (tmp.fuhao[2] == '*')
			tmp.anwser = tmp.a[0] / tmp.a[1] + tmp.a[2] * tmp.a[3];
		else if (tmp.fuhao[2] == '/')
			tmp.anwser = tmp.a[0] / tmp.a[1] + tmp.a[2] / tmp.a[3];
	}
	else if (tmp.fuhao[1] == '-')
	{
		if (tmp.fuhao[2] == '+')
			tmp.anwser = tmp.a[0] / tmp.a[1] - tmp.a[2] + tmp.a[3];
		else if (tmp.fuhao[2] == '-')
			tmp.anwser = tmp.a[0] / tmp.a[1] - tmp.a[2] - tmp.a[3];
		else if (tmp.fuhao[2] == '*')
			tmp.anwser = tmp.a[0] / tmp.a[1] - tmp.a[2] * tmp.a[3];
		else if (tmp.fuhao[2] == '/')
			tmp.anwser = tmp.a[0] / tmp.a[1] - tmp.a[2] / tmp.a[3];
	}
	else if (tmp.fuhao[1] == '*')
	{
		if (tmp.fuhao[2] == '+')
			tmp.anwser = tmp.a[0] / tmp.a[1] * tmp.a[2] + tmp.a[3];
		else if (tmp.fuhao[2] == '-')
			tmp.anwser = tmp.a[0] / tmp.a[1] * tmp.a[2] - tmp.a[3];
		else if (tmp.fuhao[2] == '*')
			tmp.anwser = tmp.a[0] / tmp.a[1] * tmp.a[2] * tmp.a[3];
		else if (tmp.fuhao[2] == '/')
			tmp.anwser = tmp.a[0] / tmp.a[1] * tmp.a[2] / tmp.a[3];
	}
	else if (tmp.fuhao[1] == '/')
	{
		if (tmp.fuhao[2] == '+')
			tmp.anwser = tmp.a[0] / tmp.a[1] / tmp.a[2] + tmp.a[3];
		else if (tmp.fuhao[2] == '-')
			tmp.anwser = tmp.a[0] / tmp.a[1] / tmp.a[2] - tmp.a[3];
		else if (tmp.fuhao[2] == '*')
			tmp.anwser = tmp.a[0] / tmp.a[1] / tmp.a[2] * tmp.a[3];
		else if (tmp.fuhao[2] == '/')
			tmp.anwser = tmp.a[0] / tmp.a[1] / tmp.a[2] / tmp.a[3];
	}
	}

	return tmp.anwser;
}
int main()
{
	ifstream is, is1, is2;
	ofstream os1, os2, os3;

//需要在桌面放置四个文件,一个是Settings.txt来调整题目参数,一个是111.txt来输出题目,一个是答案.txt来输出题目的答案,一个是成绩.txt来输出上次做题的情况

	string word2, word1, word;
	srand(time(0));

	is1.open("C:\\Users\\LEGION\\Desktop\\111.txt");
	is2.open("C:\\Users\\LEGION\\Desktop\\答案.txt");
	os3.open("C:\\Users\\LEGION\\Desktop\\成绩.txt");

	while (getline(is2, word2) && getline(is1, word1))
	{
		istringstream input(word1);
		istringstream judge(word2);
		int k = 0;
		string s1, s2;
		while (input >> s1 && judge >> s2)
		{
			k++;
			os3 << s1 << " ";
			if (k == 9)
			{
				if (s1 == s2)
					os3 << "√" << endl;
				else
					os3 << "×" << " " << "答案:" << s2 << endl;
			}
		}
	}
	is1.close();
	is2.close();
	os3.close();

	is.open("C:\\Users\\LEGION\\Desktop\\Settings.txt");

	int i = 0;
	while (getline(is, word)) {
		int check = 1;
		for (int j = word.size() - 1;; j--)
		{
			if (isdigit(word[j]))
			{
				num[i] += (word[j] - '0') * check;
				check *= 10;
			}
			else
			{
				break;
			}
		}
		i++;
	}
	is.close();

	num[3] += num[2];
	num[4] += num[3];
	num[5] += num[4];

	problem tmp;
	int check;
	for (int x = 0; x < num[0]; x++)
	{
		tmp.a[0] = rand() % 100 + 1;
		tmp.a[1] = rand() % 100 + 1;
		tmp.a[2] = rand() % 100 + 1;
		tmp.a[3] = rand() % 100 + 1;

		check = rand() % 100 + 1;
		tmp.fuhao[0] = func1(check);
		check = rand() % 100 + 1;
		tmp.fuhao[1] = func1(check);
		check = rand() % 100 + 1;
		tmp.fuhao[2] = func1(check);

		tmp.anwser = func2(tmp);
		pvec.push_back(tmp);
	}

	os1.open("C:\\Users\\LEGION\\Desktop\\111.txt"); 
	os2.open("C:\\Users\\LEGION\\Desktop\\答案.txt");

	for (vector<problem>::iterator it = pvec.begin(); it != pvec.end(); it++)
	{
		os1 << (*it).a[0] << " " << (*it).fuhao[0] << " " << (*it).a[1] << " " << (*it).fuhao[1] << " " << (*it).a[2] << " " << (*it).fuhao[2] << " " << (*it).a[3] << " " << "=" << " " << "0" << endl;
		os2 << (*it).a[0] << " " << (*it).fuhao[0] << " " << (*it).a[1] << " " << (*it).fuhao[1] << " " << (*it).a[2] << " " << (*it).fuhao[2] << " " << (*it).a[3] << " " << "=" << " " << (*it).anwser << endl;
	}

	os1.close();
	os2.close();
	cout << "新题目和新题目答案已打印成功!上次的题目已批改!";
	
	return 0;
}

 Settings.txt文件的内容布局,说明题目总量为20题,后续4行是四则运算各自所占的比例(注意总和为100)。

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值