//Examen Febrero 2017 - Grupos B, C y D //Fernando Méndez Torrubiano #include #include #include #include using namespace std; //Constantes: const int N = 10; //Tipos: typedef struct tEquipo { string nombre; int puntos; }; typedef struct tJornada { string local, visitante; int golesLocal, golesVisitante; }; typedef tEquipo tEquipos[N]; typedef tJornada tPartidos[N / 2]; typedef struct tListaEquipos { tEquipos equipo; tPartidos partido; //En este examen no se necesita un contador. }; //Funciones: void inicia(tListaEquipos&); bool cargarLiga(tListaEquipos&); bool cargarJornada(tListaEquipos&); void mostrarLiga(tListaEquipos&); void mostrarJornada(tListaEquipos&); int menu(); void ejecutarMenu(tListaEquipos&); bool actualizarLiga(tListaEquipos&); void mostrarPrimero(tListaEquipos&); void guardarLiga(tListaEquipos&); void ordenar(tListaEquipos&); int main() { tListaEquipos equipos; inicia(equipos); if ((cargarLiga(equipos)) && (cargarJornada(equipos))) { ejecutarMenu(equipos); guardarLiga(equipos); } else { cout << "FIN DEL PROGRAMA." << endl; system("PAUSE"); } return 0; } void inicia(tListaEquipos& equipos) { for (int i = 0; i < N; i++){ equipos.equipo[i].nombre = ""; equipos.equipo[i].puntos = 0; if (i < N / 2) { equipos.partido[i].local = ""; equipos.partido[i].visitante = ""; equipos.partido[i].golesLocal = 0; equipos.partido[i].golesVisitante = 0; } } } bool cargarLiga(tListaEquipos& equipos) { bool carga = false; ifstream archivo; archivo.open("liga.txt"); if (!archivo.is_open()) { cout << "Error al cargar la liga." << endl; carga = false; } else { for (int i = 0; i < N; i++) { archivo >> equipos.equipo[i].nombre; archivo >> equipos.equipo[i].puntos; } ordenar(equipos); carga = true; } archivo.close(); return carga; } void ordenar(tListaEquipos& equipos) { string auxiliar; int aux, pos; for (int i = 0; i < N; i++) { pos = i; while ((equipos.equipo[pos].puntos > equipos.equipo[pos - 1].puntos) && (pos > 0)) { auxiliar = equipos.equipo[pos].nombre; equipos.equipo[pos].nombre = equipos.equipo[pos - 1].nombre; equipos.equipo[pos - 1].nombre = auxiliar; aux = equipos.equipo[pos].puntos; equipos.equipo[pos].puntos = equipos.equipo[pos - 1].puntos; equipos.equipo[pos - 1].puntos = aux; pos--; } } } bool cargarJornada(tListaEquipos& equipos) { bool carga = false; ifstream archivo; archivo.open("jornada.txt"); if (!archivo.is_open()) { cout << "Error al cargar la jornada." << endl; carga = false; } else { for (int i = 0; i < N / 2; i++) { archivo >> equipos.partido[i].local; archivo >> equipos.partido[i].golesLocal; archivo >> equipos.partido[i].visitante; archivo >> equipos.partido[i].golesVisitante; } carga = true; } archivo.close(); return carga; } void mostrarLiga(tListaEquipos& equipos) { cout << setw(7) << right << "EQUIPO" << setw(15) << right << "PUNTOS" << endl; cout << setfill('=') << setw(25) << "\n" << setfill(char(0)) << setw(0); for (int i = 0; i < N; i++){ cout << setw(7) << right << equipos.equipo[i].nombre << setw(15) << right << equipos.equipo[i].puntos << endl; } cout << setfill('=') << setw(25) << "\n" << setfill(char(0)) << setw(0); } void mostrarJornada(tListaEquipos& equipos) { cout << setw(5) << right << "LOCAL" << setw(10) << "GOLES" << setw(20) << "VISITANTE" << setw(10) << "GOLES" << endl; cout << setfill('=') << setw(50) << "\n" << setfill(char(0)) << setw(0); for (int i = 0; i < N/2; i++) { cout << setw(4) << right << equipos.partido[i].local << left << setw(2) << right << setw(10) << equipos.partido[i].golesLocal << left << setw(4) << right <