FUNDAMENTOS DE PROGRAMACIÓN Curso: 2010/11 PRÁCTICA 10: TRATAMIENTOS SECUENCIALES II Versión: 1.0.0 SOLUCIONES Ejercicio 1 TestVuelos: mostrar("El primer vuelo (en orden de aparición) con destino a París"); mostrar(Vuelos.primeroDestino1(vuelos, "Paris")); Vuelos: public static Vuelo primeroDestino1(List<Vuelo> vuelos, String dst) { Vuelo vPrimero=null; for (Vuelo v:vuelos) { if (v.getDestino().equals(dst)) { vPrimero=v; break; } } return vPrimero; } Ejercicio 2 TestVuelos: mostrar("\nEl primer vuelo (en orden cronológico) con destino a París"); mostrar(Vuelos.primeroDestino2(vuelos, "Paris")); Vuelos: public static Vuelo primeroDestino2(List<Vuelo> vuelos, String dst) { Vuelo vPrimero=null; for (Vuelo v:vuelos) { if (v.getDestino().equals(dst)) { if (vPrimero==null) vPrimero=v; else if (v.getFecha().compareTo(vPrimero.getFecha())<0) { vPrimero=v; } } } return vPrimero; } TestVuelos: mostrar("\n¿Cuánto vale la suma de las recaudaciones de todos los vuelos que están completos?"); mostrar(Vuelos.recaudacionCompletos(vuelos)); Vuelos: public static Double recaudacionCompletos(List<Vuelo> vuelos) { Double rec=0.0; for (Vuelo v:vuelos) { if (v.getNumPasajeros().equals(v.getNumPlazas())) { rec+=v.getPrecio()*v.getNumPasajeros(); } Práctica 10: Tratamientos secuenciales II } return rec; } TestVuelos: mostrar("\nConstruye un List con los vuelos con destino Madrid"); mostrar(Vuelos.seleccionaDestino(vuelos,"Madrid")); Vuelos: public static List<Vuelo> seleccionaDestino(List<Vuelo> vuelos,String dst) { List<Vuelo>l=new ArrayList<Vuelo>(); for (Vuelo v:vuelos) { if (v.getDestino().equals(dst)) { l.add(v); } } return l; } TestVuelos: mostrar("\n¿Cuál es el vuelo con destino París con más pasajeros?"); mostrar(Vuelos.masPasajerosDestino(vuelos,"Paris")); Vuelos: public static Vuelo masPasajerosDestino(List<Vuelo> vuelos, String dst) { Vuelo max=null; for (Vuelo v:vuelos) { if (v.getDestino().equals(dst)) { if (max==null) max=v; else if(v.getNumPasajeros().compareTo(max.getNumPasajeros())>0 ) { max=v; } } } return max; } TestVuelos: mostrar("\n¿Cuál es el vuelo más barato de todos?"); mostrar(Vuelos.masBarato(vuelos)); Vuelos: public static Vuelo masBarato(List<Vuelo> vuelos) { Vuelo minVuelo=null; for (Vuelo v:vuelos) { if (minVuelo==null) minVuelo=v; else if (v.getPrecio().compareTo(minVuelo.getPrecio())<0) { minVuelo=v; } } return minVuelo; 2 Práctica 10: Tratamientos secuenciales II } TestVuelos: mostrar("\n¿Cuántos vuelos hay a Bilbao que estén completos?"); Integer n=Vuelos.completosDestino(vuelos,"Bilbao"); mostrar("hay "+n+" vuelos completos con destino a Bilbao"); Vuelos: public static Integer completosDestino(List<Vuelo> vuelos, String dst) { Integer n=0; for (Vuelo v:vuelos) { if (v.getDestino().equals(dst) && v.getNumPasajeros().equals(v.getNumPlazas())) { n++; } } return n; } TestVuelos: mostrar("\n¿Cuál es la recaudación de los vuelos a París?"); mostrar(Vuelos.recaudacionDestino(vuelos,"Paris")); Vuelos: public static Double recaudacionDestino(List<Vuelo> vuelos, String dst) { Double rec=0.0; for (Vuelo v:vuelos) { if (v.getDestino().equals(dst)) { rec+=v.getPrecio()*v.getNumPasajeros(); } } return rec; } TestVuelos: mostrar("\n¿Hay algún vuelo a Londres?"); if(Vuelos.hayVuelo(vuelos,"Londres")) mostrar("sí hay vuelo a Londres"); else mostrar("no hay vuelo a Londres"); Vuelos: public static boolean hayVuelo(List<Vuelo>vuelos, String nom) { Boolean hay=false; for (Vuelo v:vuelos) { hay = hay || v.getDestino().equals(nom); if (hay) break; } return hay; } TestVuelos: mostrar("\n¿Hay algún vuelo a Madrid con plazas libres?"); if(Vuelos.hayVueloPlazasLibres(vuelos,"Londres")) 3 Práctica 10: Tratamientos secuenciales II mostrar("sí hay vuelo a Madrid con plazas libres"); else mostrar("no hay vuelo a Madrid con plazas libres"); Vuelos: public static boolean hayVueloPlazasLibres(List<Vuelo>vuelos, String nom) { Boolean hay=false; for (Vuelo v:vuelos) { hay = hay || (v.getDestino().equals(nom) && hayPlazas(v)); if (hay) break; } return hay; } private static boolean hayPlazas(Vuelo v) { return v.getNumPlazas().compareTo(v.getNumPasajeros())>0; } 4