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:
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; } } } } };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.