Faça um programa para corrigir provas de múltipla escolha. Cada prova tem 10 questões e
cada questão vale 1 ponto. O primeiro conjunto de dados a ser lido é o gabarito da prova. Os outros dados
são os números dos alunos e as respostas que deram às questões, o programa para quando for digitado um
valor negativo. Calcule e mostre:
a) o número e a nota de cada aluno
b) a percentagem de aprovação, sabendo-se que a nota mínima é 6
c) o nome e a nota do aluno que tirou a maior nota
[code]import java.util.Scanner;
public class ex58 {
public static void main(String[] args) {
// contadores
int x,y;
// controle de equaçoes
int qtd; //quantidade de alunos
int resp; //resposta para comparar com o gabarito
int acertos;//quantidade de acertos
int maior=0;//maior nota
String mnome=" ";//nome do aluno q tirou a maior nota
int not=0;//nota do aluno
int apr=0;// quantidade de aprovados
int pApr;//porcentagem de aprovados
int gabarito[] = new int[10];
String nome[] = new String[10];
int nota[]=new int [10];
Scanner s = new Scanner(System.in);
System.out.println(":::Gabarito:::".toUpperCase());
for (x = 0; x < 10; x++) {
System.out.print((x+1)+ "ª questao :" );
gabarito[x] = s.nextInt();
}
System.out.println("Quantidade de alunos");
qtd = s.nextInt();
System.out.println(":::RESPOSTAS DAS PROVAS:::\n");
//quantidade de alunos
for(y=0;y<qtd;y++){
System.out.print("Aluno: ");
nome[x]=s.next();
acertos=0;
//quantidade de questoes
for (x = 0; x < 10; x++) {
System.out.print((x+1)+ "ª questao :" );
resp=s.nextInt();
if (resp==gabarito[x]){
acertos+=1;
}
not=acertos;
}
if(not>=6){
apr+=1;
}
if (not>maior){
mnome=nome[x];
maior=not;
}
}
System.out.println(mnome+" tirou "+maior+" e teve a maior nota");
pApr=apr*100/qtd;
for (x = 0; x < 10; x++) {
System.out.println(nome[x]+" nota: "+nota[x]);
}
System.out.println(pApr+"% foram aprovados ");
}
}[/code]
Mas continua dando erro, se alguem puder me ajudar, preciso corrigir ate amanha para a professora avaliar.
Só pra te informar, o “AJUDEM” não vai te ajudar em nada, e falar que tá quase acabando o tempo também não.
A gente até te ajuda, mas não vamos fazer pra você, e não adianta cobrar e ficar com pressa, porque só vai fazer as pessoas ficarem com menos vontade de te ajudar.
Mas vamos lá, o que você quer dizer com “Mas continua dando erro” ?
Você está tentando acessar a posição 10 de um array com 10 posições, e isso não é válido.
As posições começam a contar do 0, portanto se você tem um array com 10 posições, só pode acessar as posições de 0 a 9, a posição 10 seria a 11ª, entendeu?