import javax.swing.*;
public class Ejercicio1{
public static void main(String args[]){
//Declaracion de variables que se piden
String nombreAutor,tituloDisco,generoDisco;
double pvpDisco;
int numeroAutores,duracionDisco;
//Declaracion de variables que se devuelven
//Como supongo que como minimo se introduce un autor,inicializo algunos datos
String autorMasDiscos="",generoMenosDiscos,autorMayorDuracionMedia="";
int mayorNumeroDiscos=0,contArtistasDiscoPrecioMenorUno=0;
double mayorDuracionMedia=0.0,numeroMedioDiscosPorArtista;
//Declaracion de variables auxiliares
int contDiscos=0,contGeneroJazz=0,contGeneroPop=0,contGeneroRock=0,menorDiscosGenero,contTotalDiscos=0;
boolean hayDiscoMenosUno = false;
double sumaDuracionDiscos = 0.0,mediaDuracionDiscos;
final double PRECIO_MENOS_UNO = 1.0;
//Se pide el numero de autores que se van a introducir
numeroAutores = Integer.parseInt(JOptionPane.showInputDialog("Indique el número de autores que va a introducir"));
//Bucle en el cual se van a leer los autores y sus discos segun el numero de autores
//Asumo que se meterá por lo menos un autor
for(int i=0;i<numeroAutores;i++){
nombreAutor = JOptionPane.showInputDialog("("+(i+1)+"/"+numeroAutores+") Nombre del autor");
tituloDisco = JOptionPane.showInputDialog("("+(i+1)+"/"+numeroAutores+") Título del disco");
//Bucle para tomar los datos de los discos
while(!tituloDisco.equals("fin")){ //Asumo que el usuario va a introducir "fin" en minusculas y no de otra forma
generoDisco = JOptionPane.showInputDialog("("+(i+1)+"/"+numeroAutores+") Genero del disco "+tituloDisco); //Asumo que se va a introducir solo POP/JAZZ/ROCK y con mayusculas
pvpDisco = Double.parseDouble(JOptionPane.showInputDialog("("+(i+1)+"/"+numeroAutores+") Precio del disco "+tituloDisco));
duracionDisco = Integer.parseInt(JOptionPane.showInputDialog("("+(i+1)+"/"+numeroAutores+") Duracion del disco "+tituloDisco+" en segundos"));
//Se va llevando la cuenta de los discos
contDiscos++;
//Se va llevando cuenta de los discos que hay de cada genero
if(generoDisco.equals("JAZZ")){
contGeneroJazz++;
}
else if(generoDisco.equals("POP")){
contGeneroPop++;
}
else{
contGeneroRock++;
}
//Se usa un interruptor para ver si el autor tiene por lo menos un disco que valga menos de 1 euro
if(pvpDisco<PRECIO_MENOS_UNO){
hayDiscoMenosUno=true;
}
//Se va llevando la suma de las duraciones de los discos
sumaDuracionDiscos+=duracionDisco;
//Se pide de nuevo el nombre del disco
tituloDisco = JOptionPane.showInputDialog("("+(i+1)+"/"+numeroAutores+") Título del disco");
}
//Comprobar quien tiene el mayor numero de discos
if(mayorNumeroDiscos<contDiscos){
mayorNumeroDiscos = contDiscos;
autorMasDiscos = nombreAutor;
}
//Si el autor tiene por lo menos un disco que cueste menos de 1 euro,se suma 1 al contador
if(hayDiscoMenosUno){
contArtistasDiscoPrecioMenorUno++;
}
//Se calcula la media de la duracion de los discos y a continuacion se compara con la mayor duracion media de los discos hasta ahora
mediaDuracionDiscos = sumaDuracionDiscos/contDiscos;
if(mayorDuracionMedia<mediaDuracionDiscos){
mayorDuracionMedia = mediaDuracionDiscos;
autorMayorDuracionMedia = nombreAutor;
}
//Se suma los discos para llevar la cuenta del total de discos
contTotalDiscos+=contDiscos;
//Se reinicia la variable "contDiscos" para el siguiente autor
contDiscos = 0;
//Se reinicia la variable "hayDiscoMenosUno" para el siguiente autor
hayDiscoMenosUno = false;
//Se reinicia la variable "sumaDuracionDisco" para el siguiente autor
sumaDuracionDiscos = 0.0;
}
//Se comprueba cual genero tiene menos discos: generoMenosDiscos<contGeneroPop y generoMenosDiscos<contGeneroRock
//Para ello inicializo "menorDiscosGenero" con el "contGeneroJazz" y "generoMenosDiscos" con "JAZZ" para tener una referencia
//Si hay dos con el mismo numero,se escogera el primero
menorDiscosGenero = contGeneroJazz;
generoMenosDiscos = "JAZZ";
if(menorDiscosGenero>contGeneroPop){
menorDiscosGenero=contGeneroPop;
generoMenosDiscos = "POP";
}
if(menorDiscosGenero>contGeneroRock){
generoMenosDiscos = "ROCK";
}
//Se calcula el numero medio de discos por artista
numeroMedioDiscosPorArtista =(double) contTotalDiscos/numeroAutores;
//Devolucion de los datos pedidos
JOptionPane.showMessageDialog(null,"Autor con más discos: "+autorMasDiscos+", "+mayorNumeroDiscos+
" discos\nGénero con menos discos: "+generoMenosDiscos+
"\nArtistas con al menos un disco con precio menor de 1€: "+contArtistasDiscoPrecioMenorUno+
"\nArtista con mayor duracion media de sus discos: "+autorMayorDuracionMedia+" ("+mayorDuracionMedia+
")\nNúmero medio de discos que tienen los artistas: "+numeroMedioDiscosPorArtista);
}
}
Gracias delegado :)
ResponderEliminar