Problema em exercicio Java

6 respostas
F

Boa tarde amigos! O professor passou uma questão que não consigo resolver, que trata de matrizes. Pede para modular uma matriz das notas dos alunos na mesma disciplina ao longo de 11 anos. Turmas com no máximo 50 alunos e pede que as notas tenha 1º e 2º unidade e Final se for necessário.

Se alguém conseguir me dar uma luz ficarei muito agradecido.

6 Respostas

I

O enunciado é exatamente com essas palavras?

F

Boa tarde! Baseado nesse início, ele pede:

public static void preencherMatriz(Notas[][] notas) {
		// adicione aqui o código de preenchimento...
		// tente preencher de forma automática usando os parâmetros:
		// - cada turma tem entre 20 e 50 alunos
		// - preencha notas finais apenas se necessário
		// - coloque um percentual pequeno de chance do aluno não ter feito a prova
	}
I

Certo.

1 - Você não sebe usar as estruturas de repetição for, do-while e while?
2 - Você não sabe ‘trabalhar’ com arrays (vetores e matrizes)?
3 - Notas é uma classe? Por quê?

F

Vamos lá… Estou no inicio do curso, mas consigo fazer exercícios de Repetição e também com matrizes. O que está complicando é o fato de ter que preencher uma matriz com no mínimo 20 alunos (Linhas) e nos últimos 11 anos (Colunas) com as notas desses alunos em todos os 11 anos, com apenas uma disciplina, mas colocando as notas da 1º e 2º unidade e mais a final, se ouver. Se fosse apenas uma nota seria mais simples, o problema é preencher a matriz com todas esses notas.

I

Uma forma de fazer…

import java.util.Scanner;

public class Teste {
	private static final short NUMERO_NOTAS = 3;
	private static final short NUMERO_ANOS = 11;
	private static String[] alunos;
	private static float[] notas;
	
	public static void main(String[] args){
		short lotacao;
		Scanner leitor = new Scanner(System.in);
		
		System.out.print("\nInforme a lotação da turma: ");
		lotacao = leitor.nextShort();
		leitor.nextLine();
		
		preencherMatriz(lotacao, leitor);
		leitor.close();
		exibirHistorico(lotacao);
	}
	
	public static void preencherMatriz(short tamanho, Scanner leitor){
		char marcador;
		short contador = 1;
		short comeco = 0;
		int numeroDeNotas = tamanho * NUMERO_NOTAS * NUMERO_ANOS;
	
		alunos = new String[tamanho];
		notas = new float[numeroDeNotas];
		
		for(short i = 0; i < tamanho; i++){
			short ano = 1;
			System.out.print("Aluno: ");
			alunos[i] = leitor.nextLine();
			
			for(int j = comeco; j < numeroDeNotas; j++){
				comeco++;
				if(contador % 3 == 0){
					ano++;
					contador = 0;
					System.out.print("\nTem nota final?[s/n]\nOpção escolhida: ");
					marcador = leitor.next().charAt(0);
					leitor.nextLine();
					
					if(marcador == 'S' || marcador == 's'){
						System.out.print("Nota final: ");
						notas[j] = leitor.nextFloat();
						leitor.nextLine();
						
						System.out.println("");
					}else
						notas[j] = -1;
				}else{
					if(contador == 1)
						System.out.println("\n" + ano + "º ano");
					System.out.print("Nota " + contador + "ª Unidade: ");
					notas[j] = leitor.nextFloat();
				}
				
				contador++;
				
				if(comeco == numeroDeNotas / tamanho)
					break;
			}
		}
	}
	
	public static void exibirHistorico(short tamanho){
		int numeroDeNotas = tamanho * NUMERO_NOTAS * NUMERO_ANOS;
		short contador = 1;
		short comeco = 0;
		
		for(short i = 0; i < tamanho; i++){
			short ano = 1;
			System.out.println("\nAluno: " + alunos[i]);
			
			for(int j = comeco; j < numeroDeNotas; j++){
				comeco++;
				if(contador % 3 == 0){
					ano++;
					contador = 1;
					
					if(notas[j] != -1)
						System.out.println("Final: " + notas[j]);
					
				}else{
					if(contador == 1)
						System.out.println("\n" + ano + "º ano");
					System.out.println((contador++) + "ª unidade: " + notas[j]);
				}
				
				if(comeco == numeroDeNotas / tamanho)
					break;
			}
		}
	}
}

Rodando (para 2 anos para facilitar o teste):



image

Não se é isso que tu quer…

F

Boa tarde!
A pesar de não ser extamente isso, mas a logica me ajudou muito na solução do exercicío, e agradeço bastante pela sua disponibilidade.

Grande abraço!

Criado 1 de junho de 2020
Ultima resposta 2 de jun. de 2020
Respostas 6
Participantes 2