Notas Alumnos

Queremos crear una aplicación (acciones y / o funciones) que permita calcular las notas de los exámenes de forma ponderada. En concreto, queremos que la nota resultante se calcule en función de la nota máxima y la nota mínima obtenida.
De esta manera si un alumno ha sacado un 3 en un examen donde la nota mínima es 3, su nota final será 0. De la misma manera, si quita un 7 y la nota máxima ha sido un 7 tendrá un 10.
La fórmula que permite calcular estas notas ponderadas es la siguiente:


Nos podrán entrar un máximo de 40 alumnos, y cuando entren "xxx" en el nombre, acabaremos el bucle de entrada y mostraremos los resultados. La nota calculada siempre con dos decimales, y la nota acta sin decimal y redondeada. El programa irá así:

Entra el nombre del alumno 1: Pedro
Entra la nota del alumno 1: 5.3
-----------------
Entra el nombre del alumno 2: Albert
Entra la nota del alumno 2: 5.81
-----------------
Entra el nombre del alumno 3: José
Entra la nota del alumno 3: 2.75
-----------------
Entra el nombre del alumno 4: Juan
Entra la nota del alumno 4: 8:20
-----------------
Entra el nombre del alumno 5: xxx

-------------------------------------------------- -----------
Listado de notas
-------------------------------------------------- -----------
La nota máxima: 8.2 / / La nota mínima: 2.75

Nombre Nota Examen Nota calculada Nota acta

Pedro 5.3 4.68 5
Albert 5.81 5.61 6
José 2.75 0.00 0
Joan 8.2 10:00 10

-------------------------------------------------- -----------
Media 05:52 05:07 5

  1.    import java.lang.Math;
  2.    import cs1.*;
  3.    import java.util.*;
  4.    import java.text.*;
  5.    import java.io.*;
  6.    public class Nota_alumnes   {
  7.        
  8.       public static void main(String args[])
  9.       {
  10.          String [] nombre = new String [41];
  11.          double [] nota = new double [41];
  12.        
  13.          String nom="";
  14.          boolean salir=true;
  15.          int i=1;
  16.                
  17.          double notas=0, nota_min=0, nota_calc=0;
  18.          
  19.          while (salir&&i<41) {
  20.          
  21.             System.out.print("Entra el nom de l'alumne "+i+": ");
  22.             nom=Keyboard.readString();
  23.             nombre[i]=nom;
  24.             if (nom.equals("xxx")){
  25.                salir=false;

  26.            
  27.             }
  28.             if (salir==true){
  29.                System.out.print("Entra la nota de l'alumne "+i+": ");
  30.                notas=Keyboard.readDouble();
  31.                nota[i]=notas;
  32.            
  33.                System.out.println("-----------------");
  34.            
  35.            
  36.                i++;
  37.            
  38.             }
  39.          }
  40.          double [] nota_Ac = new double [i];
  41.          double [] nota_min_max = new double [i];
  42.          for (int j=1;j<i; j++){
  43.             nota_Ac[j]=nota[j];
  44.          
  45.             nota_min_max[j]=nota[j];
  46.          }
  47.          System.out.println("-------------------------------------------------------------------------");
  48.          System.out.println("Llistat de Notes");
  49.          System.out.println("-------------------------------------------------------------------------");
  50.          Arrays.sort(nota_min_max);
  51.          int c=i-1;
  52.      
  53.      
  54.          for (int a=1;a<i; a++) {
  55.          
  56.             if (a==1) {
  57.                System.out.println("La nota màxima: "+nota_min_max[a]+"  //  La nota mínima: "+nota_min_max[c]);
  58.                System.out.println("\nNom        Nota Examen     Nota calculada  Nota acta");
  59.            
  60.             }
  61.             nota_calc=((nota_Ac[a] - nota_min_max[1])/(nota_min_max[i-1]-nota_min_max[1]))*10;
  62.             DecimalFormat dc = new DecimalFormat("#.##");
  63.             System.out.println(nombre[a]+"      "+nota_Ac[a]+"          "+dc.format(nota_calc)+"                "+dc.format(Math.round(nota_calc)));
  64.             c=c-1;     
  65.          }
  66.      
  67.      
  68.       }}

No hay comentarios:

Publicar un comentario