Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

nicolesuet

Preciso de ajudar em descobrir o que há de errado nesse código

Recommended Posts

Deseja-se publicar o número de acertos de cada aluno em uma prova em forma de testes. A prova consta de 6 questões, cada uma com cinco alternativas identificadas por A, B, C, D e E. Para isso são dados:


· o cartão gabarito;


· o número de alunos da turma;


· o cartão de respostas para cada aluno, contendo o seu número e suas respostas.



Fiz esse código em resposta a questão, mas o resultado não é o certo



​#include <iostream>
#include <conio.h>
using namespace std;
int respostasCorretas (char gabarito[], char resposta[], int numeroQuestoes)
{
int nCorretas=0; //NUMERO DE RESPOSTAS CORRETAS


for (int cont=0; cont<numeroQuestoes; cont++)
{
if(gabarito[cont]==resposta[cont])//COMPARACAO ENTRE RESPOSTA E GABARITO. CADA QUESTÃO EQUILAVE A UM INDICE DO VETOR
{
nCorretas++;
}
}
return nCorretas;


}
main()
{
int nQuestao=0; // ESSA VARIAVEL SERA INFORMADA PELO USUARIO E EQUIVALERA AO TAMANHO DOS VETOREES
char gabarito[nQuestao], resposta[nQuestao]; //USAREMOS O TIPO CHAR POIS PREENCHEREMOS O VETOR, COM AS OPCOES A, B, C,D, E
int nAlunos = 0;


cout<<"Digite o numero de questoes do teste:\n";
cin>>nQuestao;


cout<<"Digite o numero de alunos :\n";
cin>>nAlunos;




for(int contador=0; contador<nQuestao; contador++) // LOOP QUE PREENCHERA O GABARITO
{
cout<<"Digite o gabarito da questao "<<contador+1<<"\n";
cin>>gabarito[contador];
}


for(int cont=0; cont<nAlunos; cont++) //LOOP CORRESPONDENTE A CADA ALUNO
{
for(int contador=0; contador<nQuestao; contador++) // LOOP QUE PREENCHERA O CARTAO RESPOSTAS
{
cout<<"Digite a resposta do aluno da questao "<<contador+1<<"\n";
cin>>resposta[contador];
}


cout<<"Respostas corretas desse aluno:\n "<<respostasCorretas(gabarito,resposta, nQuestao)<<"\n\n";


}
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

não conseguir perceber nenhum erro, mas também não conheço ++, se vc colocar aí o código em c eu dou uma olhada de novo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi ^-^Y

 

Não sei C++ mas não precisava saber, o seu problema foi só um erro de lógica comum, acho que não deu o resultado esperado devido ao fato de você ter declarado o tamanho do vetor com zero e depois você tentou mudar seu tamanho de acordo com a necessidade do usuário, também não sabia mas, acho que não se pode ficar alterando o tamanho de um vetor ao decorrer do código pelo que parece kkk.

 

~Problema resolvido, espero ter ajudado.

#include <iostream>
using namespace std;
int respostasCorretas (char gabarito[], char resposta[], int numeroQuestoes)
{
    int nCorretas=0; //NUMERO DE RESPOSTAS CORRETAS
 
    for (int cont=0; cont<numeroQuestoes;cont++)
    {
        cout<< "gabarito: "<<gabarito[cont]<<"\n";
    }
 
    for (int cont=0; cont<numeroQuestoes;cont++)
    {
        cout<< "Resposta: "<<resposta[cont]<<"\n";
    }
 
    for (int cont=0; cont<numeroQuestoes; cont++)
    {
        if(gabarito[cont]==resposta[cont])//COMPARACAO ENTRE RESPOSTA E GABARITO. CADA QUESTÃO EQUILAVE A UM INDICE DO VETOR
        {
            nCorretas++;
        }
    }
    return nCorretas;
 
 
}
int main()
{
    int nQuestao=0; // ESSA VARIAVEL SERA INFORMADA PELO USUARIO E EQUIVALERA AO TAMANHO DOS VETOREES
//    char gabarito[nQuestao], resposta[nQuestao]; //USAREMOS O TIPO CHAR POIS PREENCHEREMOS O VETOR, COM AS OPCOES A, B, C,D, E
    int nAlunos = 0;
 
 
    cout<<"Digite o numero de questoes do teste:\n";
    cin>>nQuestao;
 
 
    cout<<"Digite o numero de alunos :\n";
    cin>>nAlunos;
 
    char gabarito[nQuestao], resposta[nQuestao]; //USAREMOS O TIPO CHAR POIS PREENCHEREMOS O VETOR, COM AS OPCOES A, B, C,D, E
 
 
 
    for(int contador=0; contador<nQuestao; contador++) // LOOP QUE PREENCHERA O GABARITO
    {
        cout<<"Digite o gabarito da questao "<<contador+1<<"\n";
        cin>>gabarito[contador];
    }
 
 
    for(int cont=0; cont<nAlunos; cont++) //LOOP CORRESPONDENTE A CADA ALUNO
    {
        for(int contador=0; contador<nQuestao; contador++) // LOOP QUE PREENCHERA O CARTAO RESPOSTAS
        {
            cout<<"Digite a resposta do aluno da questao "<<contador+1<<"\n";
            cin>>resposta[contador];
        }
 
 
        cout<<"Respostas corretas desse aluno:\n "<<respostasCorretas(gabarito,resposta, nQuestao)<<"\n\n";
 
 
    }
}
 

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.