ADD file via upload

develop
hnu202326010401 4 months ago
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…
Cancel
Save