sou iniciante em C++ e estou tentando resolver um trabalho que o prof passou para fazer.
tenho que explicar o que o programa faz e traduzir para o portugol, mas estou com duvidas em alguns pontos e estou precisando da ajuda de todos.
segue o codigo:
class Calc{
public:
qint32 cont,j,valorTemp,MaxResult; // string declaraçoes
vector<bool> valorPreenchido;
QString temp;
qint8 euristica,qtdCartas;
Calc(qint8 serie,qint8 nivel,Tabuleiro ** tabuleiro){
cont = 0;
euristicaDeGeracaoDeFormula(serie,nivel);
srand ( (unsigned)time(0) );
*tabuleiro = new Tabuleiro(1,qtdCartas);
gerarFormulasPai(&(*tabuleiro));
}
~Calc(){}
void gerarFormulasPai(Tabuleiro ** tabuleiro){ \\ duvida não sei o que faz
gerarResultados(&(*tabuleiro));
qint8 caso;
for(int i = 0; i < (*tabuleiro)->getQtdCartas(); i++){
switch(euristica){
case 1: gerarFormulaSoma(&(*tabuleiro),i);
break;
case 2: caso = rand() % 2;// acho que a função rand divide as duasformulas para poder fazer o sorteio aleatorio e armazenar na string qint8 euristica.
switch(caso){
case 0: gerarFormulaSoma(&(*tabuleiro),i);break;
case 1: gerarFormulaSub(&(*tabuleiro),i);break;
}
case 3: caso = rand() % 4; // acho que a função rand divide as quatro formulas para poder fazer o sorteio aleatorio e armazenar na string qint8 euristica
switch(caso){
case 0: gerarFormulaSoma(&(*tabuleiro),i);break;
case 1: gerarFormulaSub(&(*tabuleiro),i);break;
case 2: gerarFormulaMult(&(*tabuleiro),i);break;
case 3: gerarFormulaDiv(&(*tabuleiro),i);break;
}
break;
case 4: caso = rand() % 5; // a função rand divide as cinco formulas para poder fazer o sorteio aleatorio e armazenar na string qint8 euristica.
switch(caso){
case 0: gerarFormulaSoma(&(*tabuleiro),i);break;
case 1: gerarFormulaSub(&(*tabuleiro),i);break;
case 2: gerarFormulaMult(&(*tabuleiro),i);break;
case 3: gerarFormulaDiv(&(*tabuleiro),i);break;
case 4: gerarFormulaPercent(&(*tabuleiro),i);break;
}
break;
}
}
void gerarResultados(Tabuleiro ** tabuleiro){ \\ duvida não sei o que faz
qint8 i;
valorPreenchido = vector<bool>(MaxResult,false);
while(cont < (*tabuleiro)->getQtdCartas()/2){ // acho que aqui preenche de par em par
i = rand() % (*tabuleiro)->getQtdCartas();
if( (*tabuleiro)->getResultadoCarta(i) == INT_MIN){
valorTemp = rand() % MaxResult;
while(valorPreenchido.at(valorTemp) == true){valorTemp = rand() % MaxResult;}
valorPreenchido.at(valorTemp) = true;
(*tabuleiro)->setResultadoCarta(i, valorTemp);
j = rand() % (*tabuleiro)->getQtdCartas();
while((*tabuleiro)->getResultadoCarta(j) != INT_MIN ){
j = rand() % (*tabuleiro)->getQtdCartas();
}
(*tabuleiro)->setResultadoCarta(j, valorTemp);
cont++;
}
}
}
void gerarFormulaSoma(Tabuleiro ** tabuleiro, qint8 i){ \\ duvida não sei o que faz
if ((*tabuleiro)->getResultadoCarta(i) > 0) valorTemp = rand() % (*tabuleiro)->getResultadoCarta(i);
else valorTemp = 0;
temp = QString::number(valorTemp) + " + " + QString::number((*tabuleiro)->getResultadoCarta(i) - valorTemp) + " = ";
(*tabuleiro)->setFormulaCarta(i,temp);
}
void gerarFormulaDiv(Tabuleiro ** tabuleiro, qint8 i){ \\ duvida não sei o que faz
vector<qint32> quocientes;
for(j = 1; j < (*tabuleiro)->getResultadoCarta(i)+1; j++){
if( (*tabuleiro)->getResultadoCarta(i) % j == 0) quocientes.push_back(j);
}
if(!quocientes.empty()){
valorTemp = rand() % quocientes.size();
temp = QString::number((*tabuleiro)->getResultadoCarta(i) * quocientes[valorTemp])
+ " / " +
QString::number(quocientes[valorTemp]) + " = ";
}
else temp = "0 * 0 = ";
(*tabuleiro)->setFormulaCarta(i,temp);
quocientes.clear();
}
void gerarFormulaPercent(Tabuleiro ** tabuleiro, qint8 i){ \\ duvida não sei o que faz
if ((*tabuleiro)->getResultadoCarta(i) > 0) valorTemp = rand() % (*tabuleiro)->getResultadoCarta(i);
else valorTemp = 0;
temp = QString::number(valorTemp) + " + " + QString::number((*tabuleiro)->getResultadoCarta(i) - valorTemp) + " = ";
(*tabuleiro)->setFormulaCarta(i,temp);
}
void euristicaDeGeracaoDeFormula(qint8 serie, qint8 nivel){ // acho que pega os dados da euristica qint 8 e distribui nestes 7 niveis de dificuldades do jogo 1
switch(serie){
case 1: switch(nivel){
case 1:
case 2: euristica = 1; qtdCartas = 4;MaxResult = 5;
break;
case 3:
case 4: euristica = 2; qtdCartas = 8;MaxResult = 5;
break;
case 5:
case 6:
case 7: euristica = 2; qtdCartas = 16;MaxResult = 10;
break;
}
case 2: switch(nivel){ // acho que pega os dados da euristica qint 8 e distribui nestes 7 niveis de dificuldades do jogo 2
case 1:
case 2: euristica = 5; qtdCartas = 4;MaxResult = 100;
break;
case 3:
case 4: euristica = 5; qtdCartas = 8;MaxResult = 200;
break;
case 5:
case 6:
case 7: euristica = 5; qtdCartas = 16;MaxResult = 500;
break;
}
break;
case 3: switch(nivel){ // acho que pega os dados da euristica qint 8 e distribui nestes 7 niveis de dificuldades do jogo 3
case 1:
case 2: euristica = 5; qtdCartas = 4;MaxResult = 200;
break;
case 3:
case 4: euristica = 6; qtdCartas = 8;MaxResult = 100;
break;
case 5:
case 6:
case 7: euristica = 6; qtdCartas = 16;MaxResult = 200;
break;
}
break;
}
}
}
}
};
Pergunta
super slot
Boa noite pessoal
sou iniciante em C++ e estou tentando resolver um trabalho que o prof passou para fazer.
tenho que explicar o que o programa faz e traduzir para o portugol, mas estou com duvidas em alguns pontos e estou precisando da ajuda de todos.
segue o codigo:
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.