Exámenes Resueltos FP - Primer Semestre
Para uso exclusivo con fines de estudio. Se prohíbe su uso para entregas calificables y/o uso comercial.
This commit is contained in:
@ -0,0 +1,224 @@
|
||||
//Ex<45>men Febrero 2016 - Grupos A, B, C e I
|
||||
//Fernando M<>ndez Torrubiano
|
||||
|
||||
#include <iostream>
|
||||
#include <string>
|
||||
#include <fstream>
|
||||
#include <iomanip>
|
||||
using namespace std;
|
||||
|
||||
//Constantes:
|
||||
const int N = 50;
|
||||
|
||||
//Tipos:
|
||||
typedef enum { embarcando, operado, retrasado, suspendido }tEstado;
|
||||
typedef struct {
|
||||
string numVuelo;
|
||||
char terminal;
|
||||
int puertaEmb;
|
||||
tEstado estVuelo;
|
||||
string destino;
|
||||
}tVuelo;
|
||||
typedef tVuelo tVuelos[N];
|
||||
typedef struct {
|
||||
tVuelos vuelo;
|
||||
int contador;
|
||||
}tListaVuelos;
|
||||
|
||||
//Funciones:
|
||||
void inizializa(tListaVuelos&);
|
||||
bool cargar(tListaVuelos&);
|
||||
void tIntToEstado(tListaVuelos&, const int);
|
||||
int menu();
|
||||
void ejecutarMenu(tListaVuelos&);
|
||||
void guardar(tListaVuelos&);
|
||||
void obtenerInfoVuelo(tListaVuelos&);
|
||||
void actualizaEstVuelo(tListaVuelos&);
|
||||
int buscarVuelo(tListaVuelos&, const string&);
|
||||
void mostrarVuelo(tListaVuelos&, const string&);
|
||||
void actualizarVuelo(tListaVuelos&, const int&, const int&);
|
||||
|
||||
|
||||
int main() {
|
||||
tListaVuelos vuelos;
|
||||
|
||||
if (cargar(vuelos)) {
|
||||
ejecutarMenu(vuelos);
|
||||
}
|
||||
else {
|
||||
cout << "Fin del programa." << endl;
|
||||
system("PAUSE");
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void inicializa(tListaVuelos& vuelos) {
|
||||
vuelos.contador = 0;
|
||||
for (int i = 0; i < N; i++) {
|
||||
vuelos.vuelo[i].numVuelo = "";
|
||||
vuelos.vuelo[i].terminal = char(0);
|
||||
vuelos.vuelo[i].puertaEmb = 0;
|
||||
vuelos.vuelo[i].estVuelo = suspendido;
|
||||
vuelos.vuelo[i].destino = "";
|
||||
}
|
||||
}
|
||||
|
||||
bool cargar(tListaVuelos& vuelos) {
|
||||
bool carga = false;
|
||||
int AUX;
|
||||
ifstream archivo;
|
||||
|
||||
inicializa(vuelos);
|
||||
archivo.open("salidas.txt");
|
||||
if (!archivo.is_open()) {
|
||||
cout << "Error al cargar el archivo." << endl;
|
||||
carga = false;
|
||||
}
|
||||
else {
|
||||
archivo >> vuelos.vuelo[vuelos.contador].numVuelo;
|
||||
while ((vuelos.vuelo[vuelos.contador].numVuelo != "XXX") && (vuelos.contador < N)) {
|
||||
archivo >> vuelos.vuelo[vuelos.contador].terminal;
|
||||
archivo >> vuelos.vuelo[vuelos.contador].puertaEmb;
|
||||
archivo >> AUX;
|
||||
tIntToEstado(vuelos, AUX);
|
||||
getline(archivo, vuelos.vuelo[vuelos.contador].destino);
|
||||
vuelos.contador++;
|
||||
archivo >> vuelos.vuelo[vuelos.contador].numVuelo;
|
||||
}
|
||||
carga = true;
|
||||
}
|
||||
archivo.close();
|
||||
|
||||
return carga;
|
||||
}
|
||||
|
||||
void tIntToEstado(tListaVuelos& vuelos, const int AUX) {
|
||||
switch (AUX) {
|
||||
case 0: vuelos.vuelo[vuelos.contador].estVuelo = embarcando; break;
|
||||
case 1: vuelos.vuelo[vuelos.contador].estVuelo = operado; break;
|
||||
case 2: vuelos.vuelo[vuelos.contador].estVuelo = retrasado; break;
|
||||
case 3: vuelos.vuelo[vuelos.contador].estVuelo = suspendido; break;
|
||||
}
|
||||
}
|
||||
|
||||
int menu() {
|
||||
int opc = 0;
|
||||
|
||||
cout << setw(40) << setfill('=') << "\n";
|
||||
cout << "1.-Obtener informacion de un vuelo." << endl;
|
||||
cout << "2.-Actualizar estado del un vuelo." << endl;
|
||||
cout << "0.-Salir." << endl;
|
||||
cout << setw(40) << setfill('=') << "\n" << setw(0) << setfill(char(0));
|
||||
|
||||
do {
|
||||
cout << "Introduzca una opcion: ";
|
||||
cin >> opc;
|
||||
} while (opc < 0 || opc > 2);
|
||||
|
||||
return opc;
|
||||
}
|
||||
|
||||
void ejecutarMenu(tListaVuelos& vuelos) {
|
||||
int opc = 1;
|
||||
while (opc != 0) {
|
||||
opc = menu();
|
||||
switch (opc) {
|
||||
case 1: obtenerInfoVuelo(vuelos); break;
|
||||
case 2: actualizaEstVuelo(vuelos); break;
|
||||
case 0: guardar(vuelos); break;
|
||||
}
|
||||
system("cls");
|
||||
}
|
||||
}
|
||||
|
||||
void guardar(tListaVuelos& vuelos) {
|
||||
ofstream archivo;
|
||||
|
||||
archivo.open("pendientes.txt");
|
||||
if (!archivo.is_open()) {
|
||||
cout << "Error al guardar." << endl;
|
||||
}
|
||||
else {
|
||||
for (int i = 0; i < vuelos.contador; i++){
|
||||
if ((vuelos.vuelo[i].estVuelo == retrasado) || (vuelos.vuelo[i].estVuelo == suspendido)) {
|
||||
archivo << vuelos.vuelo[i].numVuelo << " ";
|
||||
archivo << vuelos.vuelo[i].terminal << " ";
|
||||
archivo << vuelos.vuelo[i].puertaEmb << " ";
|
||||
archivo << vuelos.vuelo[i].estVuelo << "";
|
||||
archivo << vuelos.vuelo[i].destino << endl;
|
||||
}
|
||||
}
|
||||
}
|
||||
archivo.close();
|
||||
}
|
||||
|
||||
void obtenerInfoVuelo(tListaVuelos& vuelos) {
|
||||
string numVuelo;
|
||||
int encontrado;
|
||||
|
||||
cout << "Introduzca numero de vuelo: ";
|
||||
cin >> numVuelo;
|
||||
|
||||
encontrado = buscarVuelo(vuelos, numVuelo);
|
||||
if (encontrado != -1) {
|
||||
mostrarVuelo(vuelos, numVuelo);
|
||||
}
|
||||
else {
|
||||
cout << "Vuelo no encontrado." << endl;
|
||||
}
|
||||
system("PAUSE");
|
||||
}
|
||||
|
||||
void actualizaEstVuelo(tListaVuelos& vuelos) {
|
||||
string numVuelo;
|
||||
int encontrado;
|
||||
int nuevoEst;
|
||||
|
||||
do {
|
||||
cout << "Introduzca un numero de vuelo: ";
|
||||
cin >> numVuelo;
|
||||
encontrado = buscarVuelo(vuelos, numVuelo);
|
||||
} while (encontrado == -1);
|
||||
|
||||
cout << endl << "ESTADOS: (0)embarcando, (1)operado, (2)retrasado, (3)suspendido." << endl;
|
||||
cout << "Introduzca un nuevo estado: ";
|
||||
cin >> nuevoEst;
|
||||
actualizarVuelo(vuelos, encontrado, nuevoEst);
|
||||
cout << "Actualizado correctamente." << endl;
|
||||
system("PAUSE");
|
||||
}
|
||||
|
||||
int buscarVuelo(tListaVuelos& vuelos, const string& numVuelo) {
|
||||
int pos = 0;
|
||||
|
||||
while ((vuelos.vuelo[pos].numVuelo != numVuelo) && (pos < vuelos.contador)) {
|
||||
pos++;
|
||||
}
|
||||
if (pos == vuelos.contador) {
|
||||
pos = -1;
|
||||
}
|
||||
|
||||
return pos;
|
||||
}
|
||||
|
||||
void mostrarVuelo(tListaVuelos& vuelos, const string& numVuelo) {
|
||||
int pos = buscarVuelo(vuelos, numVuelo);
|
||||
|
||||
cout << setw(50) << setfill('=') << "\n" << setfill(char(0));
|
||||
cout << "Numero de vuelo: " << setw(15) << vuelos.vuelo[pos].numVuelo << endl
|
||||
<< "Terminal: " << setw(15) << vuelos.vuelo[pos].terminal << endl
|
||||
<< "Puerta de Embarque: " << setw(15) << vuelos.vuelo[pos].puertaEmb << endl
|
||||
<< "Estado: " << setw(15) << vuelos.vuelo[pos].estVuelo << endl
|
||||
<< "Destino: " << setw(15) << vuelos.vuelo[pos].numVuelo << endl;
|
||||
cout << setw(50) << setfill('=') << "\n" << setfill(char(0));
|
||||
}
|
||||
|
||||
void actualizarVuelo(tListaVuelos& vuelos, const int& pos, const int& estadVuelo) {
|
||||
switch (estadVuelo) {
|
||||
case 0: vuelos.vuelo[pos].estVuelo = embarcando; break;
|
||||
case 1: vuelos.vuelo[pos].estVuelo = operado; break;
|
||||
case 2: vuelos.vuelo[pos].estVuelo = retrasado; break;
|
||||
case 3: vuelos.vuelo[pos].estVuelo = suspendido; break;
|
||||
}
|
||||
}
|
Binary file not shown.
@ -0,0 +1,9 @@
|
||||
IB1231 A 2 1 Lisboa
|
||||
AF1231 A 3 1 Paris
|
||||
KLM1231 B 1 2 Amsterdam
|
||||
AL1236 A 3 1 Roma
|
||||
LU1301 A 5 0 Zagreb
|
||||
TP1302 B 2 2 Oporto
|
||||
AM1401 B 1 0 Cancun
|
||||
AV1411 B 3 3 Sao Paulo
|
||||
XXX
|
Reference in New Issue
Block a user