parent
b845619019
commit
60a0c0def3
@ -0,0 +1,115 @@
|
||||
#include"question_product.h"
|
||||
#include<cstdlib>
|
||||
#include<ctime>
|
||||
|
||||
int QuestionProduction::randnum(int min,int max){
|
||||
int num = (rand()%(max - min + 1)) + min;
|
||||
return num;
|
||||
}
|
||||
|
||||
Question QuestionProduction::questionProduction(int questionId,const std::string& usertype){
|
||||
int operationnum = randnum(1,5);
|
||||
std::vector<int> operations;
|
||||
|
||||
for(int i = 0;i < operationnum;i++){
|
||||
operations.push_back(randnum(1,100));
|
||||
}
|
||||
|
||||
if(usertype == "Сѧ"){
|
||||
return primaryProduction(questionId,operations);
|
||||
}else if(usertype == "³õÖÐ"){
|
||||
return juniorProduction(questionId,operations);
|
||||
}else if(usertype == "¸ßÖÐ"){
|
||||
return seniorProduction(questionId,operations);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Question QuestionProduction::primaryProduction(int questionId,const std::vector<int>&operation){
|
||||
if(operation.size() == 1){
|
||||
std::string expression = std::to_string(operation[0]);
|
||||
return Question(questionId,expression);
|
||||
}
|
||||
|
||||
std::string expression = std::to_string(operation[0]);
|
||||
|
||||
for(int i = 1;i < operation.size();i++){
|
||||
std::string op = primaryWay[randnum(0,primaryWay.size() - 1)];
|
||||
bool ifbracket = randnum(0,1);
|
||||
if(ifbracket){
|
||||
expression = "(" + expression + " " + op + " " + std::to_string(operation[i]) + ")";
|
||||
}else{
|
||||
expression = expression + " " + op + " " + std::to_string(operation[i]);
|
||||
}
|
||||
}
|
||||
|
||||
return Question(questionId,expression);
|
||||
}
|
||||
|
||||
Question QuestionProduction::juniorProduction(int questionId,const std::vector<int>&operation){
|
||||
std::string expression = std::to_string(operation[0]);
|
||||
bool ifSpecialop = false;
|
||||
|
||||
for(int i = 1;i < operation.size();i++){
|
||||
if(randnum(0,1) == 1){
|
||||
if(randnum(0,1) == 1){
|
||||
expression = "¡Ì" + expression;
|
||||
}else{
|
||||
expression = "(" + expression + ")?";
|
||||
}
|
||||
ifSpecialop = true;
|
||||
}
|
||||
std::string op = primaryWay[randnum(0,primaryWay.size() - 1)];
|
||||
bool ifbracket = randnum(0,1);
|
||||
if(ifbracket){
|
||||
expression = "(" + expression + " " + op + " " + std::to_string(operation[i]) + ")";
|
||||
}else{
|
||||
expression = expression + " " + op + " " + std::to_string(operation[i]);
|
||||
}
|
||||
}
|
||||
|
||||
if(!ifSpecialop){
|
||||
if(randnum(0,1) == 1){
|
||||
expression = "¡Ì" + expression;
|
||||
}else{
|
||||
expression = "(" + expression + ")?";
|
||||
}
|
||||
}
|
||||
|
||||
return Question(questionId,expression);
|
||||
}
|
||||
|
||||
Question QuestionProduction::seniorProduction(int questionId,const std::vector<int>&operation){
|
||||
std::string expression = std::to_string(operation[0]);
|
||||
bool ifTrigonometric = false;
|
||||
|
||||
for(int i = 1;i < operation.size();i++){
|
||||
if(randnum(0,1)){
|
||||
std::vector<std::string>trigFuns = {"sin","cos","tan"};
|
||||
std::string trigFun = trigFuns[randnum(0,2)];
|
||||
expression = trigFun + "(" + expression + ")";
|
||||
ifTrigonometric = true;
|
||||
}else if(randnum(0,2) == 0){
|
||||
if(randnum(0,1) == 1){
|
||||
expression = "¡Ì" + expression;
|
||||
}else{
|
||||
expression = "(" + expression + ")?";
|
||||
}
|
||||
}
|
||||
std::string op = primaryWay[randnum(0,primaryWay.size() - 1)];
|
||||
bool ifbracket = randnum(0,1);
|
||||
if(ifbracket){
|
||||
expression = "(" + expression + " " + op + " " + std::to_string(operation[i]) + ")";
|
||||
}else{
|
||||
expression = expression + " " + op + " " + std::to_string(operation[i]);
|
||||
}
|
||||
}
|
||||
|
||||
if(!ifTrigonometric){
|
||||
std::vector<std::string>trigFuns = {"sin","cos","tan"};
|
||||
std::string trigFun = trigFuns[randnum(0,2)];
|
||||
expression = trigFun + "(" + expression + ")";
|
||||
}
|
||||
|
||||
return Question(questionId,expression);
|
||||
}
|
||||
Loading…
Reference in new issue