package Arrays;

import javax.imageio.metadata.IIOMetadataFormatImpl;
import java.util.Scanner;

public class ArraysBidim {
    public static void main(String[] args) {
    //Ejercicio1();
        Ejercicio2();
    //Ejercicio3();



    }



    public static void Ejercicio3(){
        //ENUNCIADO: Desarrolla una aplicación que almacene la cantidad de comidas que tiene un restaurante,
        // cada comida debe almacenar el nombre y la cantidad de agua que contiene.
        //Por cada plato, se debe almacenar el precio de compra y el precio de venta de cada comida.

        //Objetos
        Scanner sc = new Scanner(System.in);

        //Arrays (Auxiliares)
        String[] caracteristicas = {"Identificador","Nombre", "Cantidad de agua"};
        String[] caracteristicasPrecios = {"Identificador", "Precio de compra", "Precio de venta"};
        //String[] caracteristicasGenerales = {"Identificador", "Nombre", "Cantidad de agua", "Precio de compra", "Precio de venta"};

        //Arrays (Rellenos)


        //Solicitud de dato (para creación de Array)
        //System.out.println("¿Cuántos platos quieres introducir");
        //int cantidadPlatos = sc.nextInt();
        //sc.nextLine();

        //Array Rellenos
        String[][] platos = {
                {"Lentejas","80%"},
                {"Cocido","50%"},
                {"Macarrones","60%"},
                {"Guisado","45%"},
                {"Asado","25%"},
                {"Barbacoa","10%"},
        };
        double[][] precio = {
                {12,15},
                {10,11},
                {12.5,16},
                {10.4,13},
                {18,23},
                {15,17},
        };


        //Creación de arrays bidimensionales

//        String[][] platos = new String[cantidadPlatos][caracteristicas.length];
//
//        double[][] precio = new double[cantidadPlatos][caracteristicasPrecios.length];

        //Definición de las dimensiones:
        //* 1ª Dimensión: Almacena una lista con los platos
        //* 2ª Dimensión: Almacena dentro de cada elemento de la lista de platos una serie de características.

        //OBJETIVO del bucle anidado [1]: Almacenar las características de cada plato.
        /*for (int i = 0; i < platos.length; i++) {
            //Índice i: Lista de Platos.
            //Indice j: Características dentro de la lista de platos.
            for (int j = 0; j < platos[0].length; j++) {
                //i y j actúan de índice.
                //---
                // ¿Que quiero pedir?
                // Nombre y Cantidad de Agua
                System.out.println("Introduce el/la "+ caracteristicas[j] +" del plato "+i);
                platos[i][j] = sc.nextLine();
            }
        }

        //OBJETIVO del bucle anidado [2]:
        for (int i = 0; i < precio.length; i++) {
            for (int j = 0; j < precio[0].length; j++) {
                System.out.println("Introduce el " + caracteristicasPrecios[j] + " del plato " + i);
                precio[i][j] = sc.nextDouble();
            }
        }*/

        //EXTENSIÓN DEL ENUNCIADO: Que muestres en formato de tabla los arrays (impresión por pantalla).
        //TRUCO 2 Estructuras de bucles
        // (1) → Cabecera
        //Array Cabecera (1 dimensión)
        System.out.println("TABLA PLATOS");
        for (int i = 0; i < caracteristicas.length; i++) {
            System.out.print(caracteristicas[i]+"  ");
        }
        // (2) → Array (Contenido)
        for (int i = 0; i < platos.length; i++) {
            System.out.println();
            System.out.print(i + "  ");

            for (int j = 0; j < platos[0].length; j++) {
                System.out.print(platos[i][j] + "  ");
            }

        }

        System.out.println("TABLA PRECIOS");

        for (int i = 0; i < caracteristicasPrecios.length; i++) {
            System.out.print(caracteristicasPrecios[i] + " ");
        }

        for (int i = 0; i < precio.length; i++) {
            System.out.println();
            System.out.print(i + " ");
            for (int j = 0; j < precio[0].length; j++) {
                System.out.print(precio[i][j] + " ");
            }
        }

        System.out.println("TABLA PLATOS y PRECIOS");

        for (int i = 0; i < caracteristicasPrecios.length; i++) {
            System.out.print(caracteristicasPrecios[i] + " ");
        }

        for (int i = 0; i < precio.length; i++) {
            System.out.println();
            System.out.print(platos[i][0] + " ");
            for (int j = 0; j < precio[0].length; j++) {
                System.out.print(precio[i][j] + " ");
            }
        }











    }







    public static void Ejercicio2(){
        Scanner sc = new Scanner(System.in);
        System.out.println("¿Cuántos corredores hay?");
        int numeroCorredores = sc.nextInt();
        sc.nextLine();
        String[] caracteristicas = {"Nombre", "Apellidos", "Dorsal", "País"};
        String[] caracteristicasTiempo = {"Minutos", "Segundos"};
        String[][] tiempo = {
                {"20","45"},
                {"22","25"},
                {"15","55"}
        };
        String[][] corredores = {
                {"Alberto","Carod","7","Esp"},
                {"Alejandro","Martínez","8","Esp"},
                {"Sergio","García","9","Esp"}
        };


        //String[][] corredores = new String[numeroCorredores][caracteristicas.length];
        //String[][] tiempo = new String[numeroCorredores][caracteristicasTiempo.length];



        /*for (int i = 0; i < corredores.length; i++) {
            for (int j = 0; j < corredores[0].length; j++) {
                System.out.println("Introduce el " + caracteristicas[j] + " del corredor " + (i+1));
                corredores[i][j] = sc.nextLine();
            }
        }

        for (int i = 0; i < tiempo.length; i++) {
            for (int j = 0; j < tiempo[0].length; j++) {
                System.out.println("Introduce los " + caracteristicasTiempo[j] + " del corredor " + (i+1));
                tiempo[i][j] = sc.nextLine();
            }
        }*/
        int sumador=0;
        for (int i = 0; i < tiempo.length; i++) {
            for (int j = 0; j < tiempo[0].length; j++) {
                if (j==0){ //Minutos
                sumador+=(Integer.parseInt(tiempo[i][j])*60);
                }else{ //Segundos
                    sumador+=(Integer.parseInt(tiempo[i][j]));
                }
            }
        }
        double media = sumador/tiempo.length;
        System.out.println("La media de tiempo es de "+media+" segundos");


    }















    public static void Ejercicio1(){
        //Al principio indicas cuantos patinadores se presentan la prueba.
        Scanner sc = new Scanner(System.in);

        System.out.println("¿Cuántos patinadores hay?");
        int numeroPatinadores = sc.nextInt(); //Soporta el tamaño de patinadores.
        sc.nextLine(); //Ponemos un nextLine vacío para que lo salte.
        String[] caracteristicas = {"nombre", "apellido", "pais"};

        //String[] patinadores = new String[20]; // 1 Dimensión (¡¡PERO TENEMOS DE 2 DIMENSIONES!!)
        String[][] patinadores = new String[numeroPatinadores][caracteristicas.length];
        // ¿Qúe significa conceptualmente cada fila?    Características de un patinador concreto.
        // ¿Qué significa conceptualmente cada columna? Cada una de las características de un patinador concreto.
        final int JUECES = 3;
        double[][] puntuaciones = new double[patinadores.length][JUECES];


        //FORMA INCORRECTA
        /*for (int i = 0; i < numeroPatinadores; i++) {
            System.out.println("Introduce el nombre del patinador " + i);
            String patinador = sc.nextLine();
            System.out.println("Introduce el apellido del patinador " + i);
            String apellido = sc.nextLine();
            System.out.println("Introduce el país del patinador " + i);
            String pais = sc.nextLine();
        }*/
        //¿Cómo puedo aprovechar en primer lugar una "estanteria" [Array] y en segundo lugar no sobreescribir las variables?

        //FORMA CORRECTA
        //* AHORA SI!. No solo no sobreescribo sino que relleno cada uno de las diferentes posiciones dentro del Array.
        /*for (int i = 0; i < numeroPatinadores; i++) {
            System.out.println("Introduce el nombre del patinador " + i);
            patinadores[i][0] = sc.nextLine();
            System.out.println("Introduce el apellido del patinador " + i);
            patinadores[i][1] = sc.nextLine();
            System.out.println("Introduce el país del patinador " + i);
            patinadores[i][2] = sc.nextLine();
        }*/


        //FORMA MÁS CORRECTA
        for (int i = 0; i < patinadores.length; i++) {
            for (int j = 0; j < patinadores[0].length; j++) {
                System.out.println("Introduce el " + caracteristicas[j] + " del participante " + (i + 1));
                patinadores[i][j] = sc.nextLine();
            }
        }

        for (int i = 0; i < puntuaciones.length; i++) {
            for (int j = 0; j < puntuaciones[0].length; j++) {
                //El mensaje por pantalla debe imprimir que patinador (nombre y apellido) va a recibir que puntuación (juez [número])
                System.out.println("JUEZ " + (j + 1) + " Introduce la puntuación del patinador " + patinadores[i][0] + " " + patinadores[i][1]);
                puntuaciones[i][j] = sc.nextDouble();
            }
        }

        //Por cada patinador calcules la media y la muestres al final cada patinador con su media (Array unidimensional almacenar la media de cada patinador)

        double[] media = new double[patinadores.length];

        double subMedia = 0; //Representa la media individual (como variable temporal)
        for (int i = 0; i < puntuaciones.length; i++) {
            //Empieza la iteración de cada participante
            subMedia = 0; //Se reinicia la variable temporal.
            for (int j = 0; j < puntuaciones[0].length; j++) {
                //En cada iteración lee cada puntuación.
                subMedia+=puntuaciones[i][j]; //Incrementa la puntuación localizada en un patinador (i) y juez concreto (j)
            }
            //He sumado todas las puntuaciones, obtengo la media.
            media[i]=subMedia/puntuaciones[0].length; //Siendo i también la representación de cada patinador con su media.
            //Si el primer patinador es Pepito, la primera media será Pepito (Respetamos la misma relación en cada array)
            String nombreComleto = patinadores[i][0]+" "+patinadores[i][1];
            System.out.println("La media de "+nombreComleto+" es de "+media[i]+" ptos.");
        }
    }
}
