Algoritmo - Contabilizar Faltas de Alunos com Módulo

7 respostas
M

Amigos boa noite !

6) Escrever um algoritmo para contabilizar as faltas de 10 alunos em 5 aulas da disciplina Algoritmos. Para armazenar as informações, o sistema deve utilizar uma matriz 5 x 10, onde as linhas representam as aulas e cada coluna representa um aluno. O algoritmo deve ter os seguintes módulos:
* Um módulo (função) para preencher a matriz 5 x 10 com 0 (presença) ou 1 (falta)
* Um módulo (procedimento) para apresentar a quantidade de faltas de cada um dos alunos. A saída deve ser realizada no formato abaixo:
Aluno 1 faltou a 5 aulas.
...
Aluno 10 não faltou.

* Um módulo (procedimento) para apresentar o aluno que mais faltou às aulas. O nome dos alunos será Aluno 1, Aluno 2, ..., Aluno n. A saída deve ser realizada no formato:
O aluno que mais faltou foi o Aluno 1. Ele faltou a 5 aulas.

COMO vou fazer pra separar as faltas dos alunos ???
Não consegui !

Segue código:

public class EX6 
{
    public static void AlunoPresença1(int inicia1)
    {
     int [][] Aluno1 = new int [5][1];   
     int i;
     int g;
     
     for (i=0;i<=Aluno1.length;i++)
             
     {
         for (g=0;g<Aluno1[0].length;g++)
         {
             Aluno1[i][g] = Integer.parseInt(JOptionPane.showInputDialog("Digite as Faltas // Presenças do Aluno 1"));
             
             if (Aluno1[i][g] == 0)
             {
             System.out.println("Presença: " + Aluno1[i][g]);
             }
             if (Aluno1[i][g] == 1)
             {
            System.out.println("Falta: " + Aluno1[i][g]);
             }
             if (Aluno1[i][g] != 0 && Aluno1[i][g] != 1)
             {
            System.out.println("Operação Errada ! Utilize 0 para Presença e 1 para Falta!");     
            System.exit(1);
             }
             
        }
         }
     // Termina ALUNO 1
   
     }
     
     
    public static void main (String [] Args)
    {
 
        int inicia1=0;

        
                
        AlunoPresença1(inicia1);
       
    }
    
}

Grato!

7 Respostas

T

Amigo, bom dia!

Se você parar para pensar, quando for preencher a matriz, deverá percorrer o numero de ALUNOS (colunas) primeiro, para depois percorrer o numero de linhas (presença/falta), concorda? Desta forma, poderá dar nome aos burros. Isto é, poderá dar presença para determinado aluno. Da maneira como você estava fazendo, você percorria as linhas primeiro para depois percorrer as colunas. O que acontecia neste caso? Acontecia que vc sempre colocava valores (presença/falta) para N alunos. Em outras palavras, você perguntava: Este aluno veio hoje? E este? E este? E assim por diante. Creio que de acordo com: * Um módulo (função) para preencher a matriz 5 x 10 com 0 (presença) ou 1 (falta), você deveria fazer justamente ao contrário, que seria perguntar: "Este aluno teve quantas faltas/presenças? E este? ....".

Pensando assim, você tem de criar um contador para faltas e presenças, pra você ver justamente qual será a frequência de cada aluno.
Sendo assim, fiz algumas mudanças em seu código. Ainda não está completo e é claro que você pode melhorá-lo. Como por exemplo, fazer uma programação defensiva (Caso seja digitado um valor que não seja número e/ou não seja digitado nada) e tratar da maneira que precisa a saída de seu programa.. Tenho a certeza de que você consegue fazer isso. ;)

Vamos ao código:

import javax.swing.JOptionPane;

public class Teste {

	public static void main(String[] args) {
		int qtdAlunos = 2;
		int [][] Aluno1 = new int [5][qtdAlunos];     
	     int i;  
	     int g;  
	     int presencas = 0;
	     int faltas = 0;	       
	     
	         for (g = 0; g < Aluno1[0].length; g++) {  //colunas = alunos
	        	 for (i = 0; i < Aluno1.length; i++) { //linhas = presenças | faltas
	        		 Aluno1[i][g] = Integer.parseInt(JOptionPane.showInputDialog("Digite as Faltas // Presenças do Aluno" + (g+1)));
	        		 Aluno1[0][g] = (g+1);
	        	 }
	         }  
 
	    
	     for (int j = 0; j < Aluno1[0].length; j++) {
			for (int k = 0; k < Aluno1.length; k++) {
				if (Aluno1[k][j] == 0)  
	             {  
					presencas++;
	             }  else {
	            	faltas++;
	             }		
			}
			System.out.println("Aluno " + Aluno1[0][j] + " - Faltas: " + faltas + " - Presença: " + presencas);
			presencas = 0;
			faltas = 0;
		}

	}

}

Espero que tenha lhe ajudado!
Se precisar de ajuda ainda, fique a vontade =)

Abraço!

M

Bom Dia!

oooooo amiiigo, melhor impossivel cara !!

Mt obrigado !

Uma dúvida!!

na linha 16 do seu código

O que faz exatamente ??? rsrs

Aluno1[0][g] = (g+1);

Abraço.

T

Simplesmente “coloco” o aluno N+1 (pra não ficar aluno 0, ou seja N = 0) em sua devida coluna.

:slight_smile:

Abs e boa sorte!

M

Amigo consegui dei uma alterada no código !!!
Só que como faço para ele comparar as colunas e mostrar quem é o Aluno que mais faltou ?

Segue código!!

public class T1 {  
      
        
        static int qtdAlunos = 2;  
        static int [][] Aluno1 = new int [5][qtdAlunos]; 
        static int presencas=0;
        static int faltas=0;
            
        public static void PresençaAluno(int incia)
        {
                   
             int i;    
             int g;    
            
               
                 for (g = 0; g < Aluno1[0].length; g++) {  //colunas = alunos  
                     for (i = 0; i < Aluno1.length; i++) { //linhas = presenças | faltas  
                        
                         Aluno1[i][g] = Integer.parseInt(JOptionPane.showInputDialog("Digite as Faltas // Presenças do Aluno" + (g+1)));  
                         Aluno1[0][g] = (g+1);
                     }
            
                     }  
        }
                public static void QuantFalta(int inicia)
                {
      
                for (int j = 0; j < Aluno1[0].length; j++) {  
                for (int k = 0; k < Aluno1.length; k++) {  
                    if (Aluno1[k][j] == 0)    
                     {    
                        presencas++;  
                     }  else {  
                        faltas++;  
                     }        
                } 
                if (faltas > 1 && faltas != 0)
                {
                System.out.println("Aluno " + Aluno1[0][j] + " faltou a " + faltas +  " Aulas");  
            
                }
                if (faltas == 1)
                {
                System.out.println("Aluno " + Aluno1[0][j] + " faltou a " + faltas +  " Aula");  
               
                }
                if (faltas == 0)
                {
                System.out.println("Aluno " + Aluno1[0][j] + " não faltou");  
                 
                 
                }
               
                presencas=0;
                faltas=0;
                
            }  
                
        }
                    public static void AlunoMaisFaltou(int inicia)
                    {
                for (int j = 0; j < Aluno1[0].length; j++) {  
                for (int k = 0; k < Aluno1.length; k++) {  
                    if (Aluno1[k][j] == 1)    
                     {    
                         
                     }    
                     
                }
               
                    }

                    }
                 
                   
         
        public static void main(String[] args) {  
           
            int inicia=0;
            
            PresençaAluno(inicia);
            QuantFalta(inicia);
            AlunoMaisFaltou(inicia);
            
            
        }  
      
    }

GRATO !!!

T

Como sua matris não é ordenada, a solução é comparar elemento à elemento…

E você vai ter que criar uma nova variável, que receba a soma dos dias que o aluno faltou. No final você vê qual é o maior número.

Consegue fazer isso?

M

Entaãaao cara , na cabeça até pensa que sabe mas na hr de botar em prática que eu me ferro…

rsrsrs!

T

Estou no trabalho agora…

Quando eu chegar em casa eu lhe ajudo, ok?

Abs

Criado 27 de maio de 2012
Ultima resposta 29 de mai. de 2012
Respostas 7
Participantes 2