[Antiguo Blog] Matriz con Longitudes Diferentes

on lunes, 11 de agosto de 2014
Bueno ahora en clase de Est. & Org. de Datos, nos pidieron hacer una matriz diferente a lo comun oseasemelese
comun:
int matriz[][] = new int[3][3];
haciendo asi que 3 vectores, contengan 3 campos, pero en este caso se decea que cada vector o renglon contenga mas o menos campos, segun

quedando algo asi
int matriz[][] = new int[3][];
matriz[0] = new int[2];
matriz[1] = new int[4];
matriz[2] = new int[7];

Asi podriamos poner a cada uno exactamente como lo deceemos, pero bueno ya el punto era que deceabamos hacer eso y cada renglon representa un alumno y columna materia, y entonces sacar el promedio por materia, pero en ocaciones un alumno lleva menos materias que otro por lo que tendriamos que checar que tal alumno cumpla con tales sino que no lo lea porque daria un error de fuera de rango si no tuviera tal materia.

Bueno ya al final de todo aqui lo hice aunque me falto comentarlo jeje ;D
Ahi cualquier duda o cosa y/o Sugerencia o algun error que vean me avisan asi tambien mejorar jejeje xP

public class Matriz 
{
 public static void main(String[] args) 
 {
  int alumnos, cal, mcal = 0;
  do{
   alumnos = read.dataInt("Cantidad de Alumnos: ");
  }while(alumnos < 0);
  int matriz [][] = new int[alumnos][];
  for(int x = 0; x < alumnos; x++)
  {
   cal = read.dataInt("Cantidad de Materias Alumno[" + (x+1) + "]: ");
   matriz[x] = new int[cal];
   if(mcal < cal)
    mcal = cal;
  }
  SOP("\n");
  matriz = Rellenar(matriz,mcal);
  SacarPromedioXMateria(matriz,mcal);
  SacarPromedioXAlumno(matriz,mcal);
 }
 
 private static int [][] Rellenar(int matriz[][], int mcal)
 {
  for(int x = 0; x < mcal; x++)
  {
   SOP("Ingreso de Calificaciones Materia [" + (x+1) + "]: ");
   for(int xx = 0; xx < matriz.length; xx++)
   {
    if(matriz[xx].length >= (x+1))
     matriz[xx][x] = read.dataInt("Calificacion Alumno [" + (xx+1) + "]: ");
   }
   SOP("\n");
  }
  return matriz;
 }
 
 private static void SacarPromedioXMateria(int matriz [][], int mcal)
 {
  int prom;
  for(int x = 0; x < mcal; x++)
  {
   prom = 0;
   for(int xx = 0; xx < matriz.length; xx++)
   {
    if(matriz[xx].length >= (x+1))
     prom += matriz[xx][x];
   }
   prom = prom/matriz.length;
   SOP("Promedio Materia [" + (x+1) + "]: " + prom);
  }  
 }
 
 private static void SacarPromedioXAlumno(int matriz [][], int mcal)
 {
  int prom;
  for(int x = 0; x < matriz.length; x++)
  {
   prom = 0;
   for(int xx = 0; xx < matriz[x].length; xx++)
   {
    prom += matriz[x][xx];
   }
   prom = prom/mcal;
   SOP("Promedio Alumno [" + (x+1) + "]: " + prom);
  }
 }
 
 private static void SOP(String msj)
 {
  System.out.println(msj);
 }

}

0 comentarios:

Publicar un comentario