Advertisement
Nasty

Java Exercise

Jun 13th, 2013
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.87 KB | None | 0 0
  1. import java.util.ArrayList;
  2. import java.util.HashMap;
  3. import java.util.List;
  4. import java.util.Map;
  5. import java.util.Map.Entry;
  6. import java.util.Scanner;
  7.  
  8. public class Program {
  9.    
  10.     public static int numeroAlumnos, numeroAsignaturas;
  11.     public static Alumnos[] alumnos;
  12.     public static Asignaturas[] asignaturas;
  13.    
  14.     public static void main(String[] args) {
  15.         entrada();
  16.         salida();
  17.     }
  18.    
  19.     public static void entrada() {
  20.         Scanner consola = new Scanner(System.in);
  21.         numeroAlumnos = Integer.parseInt(consola.next());
  22.         numeroAsignaturas = Integer.parseInt(consola.next());
  23.         alumnos = new Alumnos[numeroAlumnos + 1];
  24.         for(int x = 1; x <= numeroAlumnos; x++) {
  25.             alumnos[x] = new Alumnos(x);
  26.         }
  27.         asignaturas = new Asignaturas[numeroAsignaturas + 1];
  28.         for(int x = 1; x <= numeroAsignaturas; x++) {
  29.             asignaturas[x] = new Asignaturas(x);
  30.         }
  31.         Alumnos alumno = null;
  32.         Asignaturas asignatura = null;
  33.         int numeroAlumno = 0, numeroAsignatura = 0;
  34.         float notaAlumno = 0;
  35.         for(int x = 0; x < numeroAlumnos * numeroAsignaturas; x++) {
  36.             numeroAlumno = consola.nextInt();
  37.             numeroAsignatura = consola.nextInt();
  38.             notaAlumno = consola.nextFloat();
  39.             alumno = cogerAlumno(numeroAlumno);
  40.             alumno.asignarNota(numeroAsignatura, notaAlumno);
  41.             asignatura = cogerAsignatura(numeroAsignatura);
  42.             asignatura.ponerNota(notaAlumno);
  43.         }
  44.         consola.close();
  45.     }
  46.    
  47.     public static void salida() {
  48.         System.out.println("Estudiantes");
  49.         Alumnos alumno = null;
  50.         for(int numeroAlumno = 1; numeroAlumno <= numeroAlumnos; numeroAlumno++) {
  51.             alumno = cogerAlumno(numeroAlumno);
  52.             System.out.print(alumno.numeroAlumno + " " + notaMedia(alumno.cogerNotas()));
  53.             for(float nota : alumno.cogerNotas())
  54.                 System.out.print(" " + nota);
  55.             System.out.println();
  56.         }
  57.         Asignaturas asignatura = null;
  58.         System.out.println("Asignaturas");
  59.         for(int numeroAsignatura = 1; numeroAsignatura <= numeroAsignaturas; numeroAsignatura++) {
  60.             asignatura = cogerAsignatura(numeroAsignatura);
  61.             System.out.println(numeroAsignatura + " " + notaMedia(asignatura.cogerNotas()));
  62.         }
  63.     }
  64.    
  65.     public static float notaMedia(float... notas) {
  66.         float notaMedia = 0;
  67.         for(float nota : notas)
  68.             notaMedia += nota;
  69.         notaMedia /= notas.length;
  70.         return notaMedia;
  71.     }
  72.    
  73.     public static Alumnos cogerAlumno(int numeroAlumno) {
  74.         for(int x = 1; x <= alumnos.length; x++) {
  75.             if(alumnos[x].numeroAlumno == numeroAlumno)
  76.                 return alumnos[x];
  77.         }
  78.         return null;
  79.     }
  80.    
  81.     public static Asignaturas cogerAsignatura(int numeroAsignatura) {
  82.         for(int x = 1; x <= asignaturas.length; x++) {
  83.             if(asignaturas[x].numeroAsignatura == numeroAsignatura)
  84.                 return asignaturas[x];
  85.         }
  86.         return null;
  87.     }
  88.    
  89.     public static class Alumnos {
  90.        
  91.         public int numeroAlumno;
  92.         public Map<Integer, Float> notas;
  93.        
  94.         public Alumnos(int numeroAlumno) {
  95.             this.numeroAlumno = numeroAlumno;
  96.             this.notas = new HashMap<Integer, Float>(Program.numeroAsignaturas);
  97.         }
  98.        
  99.         public void asignarNota(int numeroAsignatura, float notaAlumno) {
  100.             this.notas.put(numeroAsignatura, notaAlumno);
  101.         }
  102.        
  103.         public float[] cogerNotas() {
  104.             float[] notas = new float[this.notas.size()];
  105.             int count = 0;
  106.             for(Entry<Integer, Float> nota : this.notas.entrySet()) {
  107.                 notas[count++] = nota.getValue();
  108.             }
  109.             return notas;
  110.         }
  111.        
  112.     }
  113.    
  114.     public static class Asignaturas {
  115.        
  116.         public int numeroAsignatura;
  117.         public List<Float> notasAlumnos;
  118.        
  119.         public Asignaturas(int numeroAsignatura) {
  120.             this.numeroAsignatura = numeroAsignatura;
  121.             this.notasAlumnos = new ArrayList<Float>(Program.numeroAlumnos);
  122.         }
  123.        
  124.         public void ponerNota(float notaAlumno) {
  125.             this.notasAlumnos.add(notaAlumno);
  126.         }
  127.        
  128.         public float[] cogerNotas() {
  129.             float[] notas = new float[this.notasAlumnos.size()];
  130.             int count = 0;
  131.             for(Float nota : notasAlumnos) {
  132.                 notas[count++] = nota;
  133.             }
  134.             return notas;
  135.         }
  136.        
  137.     }
  138.    
  139. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement