老师给我们的作业,写完以后觉得很有意思,有兴趣的人可以试着玩玩
#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)。