Ir ao conteúdo

Posts recomendados

Postado

Preciso de ajuda neste exercício, não estou conseguindo elaborá-lo, está dando erro na hora de calcular a nota :/

Citação

 

ENUNCIADO

Programa tem que ser feito pelo NetBeans...

Faça um programa em Java para corrigir provas de múltipla escolha.

Cada prova tem 5 questões e cada questão vale 1 ponto.

O primeiro conjunto de dados a ser lido é o gabarito da prova.

Os outros serão os números dos alunos e suas respectivas respostas.

Existem 3 alunos matriculados.

Calcule e mostre para cada aluno seu número e sua nota.

Obs. Utilizem estrutura de repetição para obter os dados de cada aluno e para cada aluno verifiquem a resposta com o gabarito (utilizem outra estrutura de repetição)

for(a=0;a<15;a++){

    //repetição alunos

  for(r=0;r<10;r++){

      //repetição notas

  }

}

 

 

Meu código:

package pkg11;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        
        int not=0;
        char gabarito[]  = new char[5];
        char resposta[]  = new char[5];
        int alunos[] = new int [3];
        int nota[] = new int [3];
        
        Scanner leia = new Scanner(System.in);
        for(int x =0; x<5; x++){
        System.out.print("Resposta Questão "+(x+1)+": ");
        gabarito[x] = leia.next().charAt(0);
        }
        
        for(int x =0; x<3; x++){
        System.out.print("\nInforma o numero do aluno: ");
        alunos[x] = leia.nextInt();
        
        for(int a =0; a<5; a++){
        System.out.print("Respostas Aluno "+(x+1)+": ");
        resposta[a] = leia.next().charAt(0);
        if (gabarito[x] == resposta[x]){
        not++;
        }  
        }
        nota[x] = not;
         System.out.print("\n\nAluno "+alunos[x]+" nota "+nota[x]);
        } 
        
        }
    }  

 

Erro:

 

Citação

 

Resposta Questão 1: A
Resposta Questão 2: A
Resposta Questão 3: A
Resposta Questão 4: A
Resposta Questão 5: A

 

Informa o numero do aluno: 1
Respostas Aluno 1: A
Respostas Aluno 1: A
Respostas Aluno 1: A
Respostas Aluno 1: A
Respostas Aluno 1: A
Aluno 1 nota 5 //ok


Informa o numero do aluno: 2
Respostas Aluno 2: A
Respostas Aluno 2: B
Respostas Aluno 2: B
Respostas Aluno 2: B
Respostas Aluno 2: B
Aluno 2 nota 6 //errado


Informa o numero do aluno: 3
Respostas Aluno 3: B
Respostas Aluno 3: B
Respostas Aluno 3: B
Respostas Aluno 3: B
Respostas Aluno 3: B

Aluno 3 nota 6 //errado

 

 

Postado

Bom, eu encontrei dois erros, o primeiro erro está aqui: 

		System.out.print("Respostas Aluno " + (x + 1) + ": ");
		resposta[a] = leia.next().charAt(0);
		if (gabarito[x] == resposta[x]) { //aqui
			not++;
		}
	}

o certo seria:

		System.out.print("Respostas Aluno " + (x + 1) + ": ");
		resposta[a] = leia.next().charAt(0);
		if (gabarito[a] == resposta[a]) { //aqui
			not++;
		}
	}

pois comparando gabarito[x] com resposta[x] você não iria comparar todas as respostas que o usuário informar, pois o "x" só incrementa ao sair desse for das respostas, então o certo seria comparar gabarito[a] com resposta[a], por que "a" incrementa a cada resposta, então aí sim eu compararia a primeira resposta com a primeira do gabarito, e a segunda com a segunda e aí por diante.

 

O segundo erro foi que "not" precisa resetar a cada novo aluno, senão ele vai ficar somando a nota do aluno anterior com o atual aí o resultado final fica errado. Então após imprimir a nota do aluno é só você zerar a nota novamente.

 

nota[x] = not;
System.out.print("\n\nAluno " + alunos[x] + " nota " + nota[x]);
not = 0;

Agora deve ficar tudo certo.

Espero ter ajudado, não sou muito bom com explicações... :s

  • Amei 1
Postado
Em 26/10/2017 às 17:42, AntonyBR disse:

Bom, eu encontrei dois erros, o primeiro erro está aqui: 


		System.out.print("Respostas Aluno " + (x + 1) + ": ");
		resposta[a] = leia.next().charAt(0);
		if (gabarito[x] == resposta[x]) { //aqui
			not++;
		}
	}

o certo seria:


		System.out.print("Respostas Aluno " + (x + 1) + ": ");
		resposta[a] = leia.next().charAt(0);
		if (gabarito[a] == resposta[a]) { //aqui
			not++;
		}
	}

pois comparando gabarito[x] com resposta[x] você não iria comparar todas as respostas que o usuário informar, pois o "x" só incrementa ao sair desse for das respostas, então o certo seria comparar gabarito[a] com resposta[a], por que "a" incrementa a cada resposta, então aí sim eu compararia a primeira resposta com a primeira do gabarito, e a segunda com a segunda e aí por diante.

 

O segundo erro foi que "not" precisa resetar a cada novo aluno, senão ele vai ficar somando a nota do aluno anterior com o atual aí o resultado final fica errado. Então após imprimir a nota do aluno é só você zerar a nota novamente.

 


nota[x] = not;
System.out.print("\n\nAluno " + alunos[x] + " nota " + nota[x]);
not = 0;

Agora deve ficar tudo certo.

Espero ter ajudado, não sou muito bom com explicações... :s

 

Obrigada!!

Consegui resolver, tu me ajudou bastante!! S2

  • Haha 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!