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:
parent
36df5ecef5
commit
07651a8047
@ -0,0 +1,289 @@
|
|||||||
|
//Examen Febrero 2011 - Grupos A, B y C.
|
||||||
|
//Fernando Méndez Torrubiano
|
||||||
|
|
||||||
|
#include <iostream>
|
||||||
|
#include <string>
|
||||||
|
#include <fstream>
|
||||||
|
#include <iomanip>
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
|
||||||
|
//Constantes:
|
||||||
|
/*EJERCICIO 1*/
|
||||||
|
const int MAX_NUM = 1000;
|
||||||
|
const int NUM_CIFRAS = 5;
|
||||||
|
/*EJERCICIO 2*/
|
||||||
|
const int NUM_PIEZAS = 16 * 2;
|
||||||
|
const int NUM_JUGADORES = 2;
|
||||||
|
const int DIMENSIONES = 8;
|
||||||
|
|
||||||
|
//Tipos:
|
||||||
|
/*EJERCICIO 1*/
|
||||||
|
typedef struct tNumero {
|
||||||
|
int numero;
|
||||||
|
int contadorCifra;
|
||||||
|
};
|
||||||
|
typedef tNumero tNumeros[MAX_NUM];
|
||||||
|
typedef struct tListaNumeros {
|
||||||
|
tNumeros numeros;
|
||||||
|
int contador;
|
||||||
|
};
|
||||||
|
/*EJERCICIO 2*/
|
||||||
|
typedef enum tPieza { vacia, peon, torre, caballo, alfil, reina, rey };
|
||||||
|
typedef enum tColor { blanca, negra };
|
||||||
|
typedef struct tCelda {
|
||||||
|
tPieza pieza;
|
||||||
|
tColor color;
|
||||||
|
};
|
||||||
|
typedef tCelda tTablero[DIMENSIONES][DIMENSIONES];
|
||||||
|
typedef struct tPartida {
|
||||||
|
tTablero tablero;
|
||||||
|
int contador;
|
||||||
|
};
|
||||||
|
|
||||||
|
//Funciones:
|
||||||
|
void ejecutarMenu(tListaNumeros&, tPartida&);
|
||||||
|
int menu();
|
||||||
|
/*EJERCICIO 1*/
|
||||||
|
void inicializa(tListaNumeros&);
|
||||||
|
bool cargar(tListaNumeros&);
|
||||||
|
void procesar(tListaNumeros&);
|
||||||
|
bool guardar(tListaNumeros&);
|
||||||
|
/*EJERCICIO 2*/
|
||||||
|
void iniciaTablero(tPartida&);
|
||||||
|
bool cargar(tPartida&);
|
||||||
|
void colocar(tPartida&, const char&, const char&, const int&, const int&);
|
||||||
|
void posicion(tPartida&);
|
||||||
|
void mostrarCasilla(tPartida&, const int&, const int&);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
tListaNumeros listaNum;
|
||||||
|
tPartida partida;
|
||||||
|
|
||||||
|
ejecutarMenu(listaNum, partida);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ejecutarMenu(tListaNumeros& listaNum, tPartida& partida) {
|
||||||
|
int opc = 1;
|
||||||
|
|
||||||
|
while (opc != 0) {
|
||||||
|
opc = menu();
|
||||||
|
switch (opc){
|
||||||
|
case 0: break;
|
||||||
|
case 1:
|
||||||
|
if (cargar(listaNum)) {
|
||||||
|
cout << "Cargado correctamente." << endl;
|
||||||
|
if (guardar(listaNum)) {
|
||||||
|
cout << "Guardado correctamente." << endl;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
cout << "Vauelva a intentarlo." << endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
cout << "FIN DEL PROGRAMA." << endl;
|
||||||
|
}
|
||||||
|
system("PAUSE");
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
if (cargar(partida)) {
|
||||||
|
posicion(partida);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
system("cls");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int menu() {
|
||||||
|
int opc = 0;
|
||||||
|
|
||||||
|
cout << setw(35) << setfill('=') << "MENU" << setw(35) << "\n" << setfill(char(0));
|
||||||
|
cout << "1.-Contar numero de cifras de los numeros del archivo 'entrada.txt'." << endl;
|
||||||
|
cout << "2.-Partida de ajedrez." << endl;
|
||||||
|
cout << "0.-Salir." << endl;
|
||||||
|
cout << setw(70) << setfill('=') << "\n" << setfill(char(0));
|
||||||
|
|
||||||
|
do {
|
||||||
|
cout << "Introduzca una opcion: ";
|
||||||
|
cin >> opc;
|
||||||
|
} while (opc < 0 || opc > 2);
|
||||||
|
|
||||||
|
return opc;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*EJERCICIO 1*/
|
||||||
|
void inicializa(tListaNumeros& listaNum) {
|
||||||
|
listaNum.contador = 0;
|
||||||
|
|
||||||
|
for (int i = 0; i < MAX_NUM; i++) {
|
||||||
|
listaNum.numeros[i].numero = 0;
|
||||||
|
listaNum.numeros[i].contadorCifra = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool cargar(tListaNumeros& listaNum) {
|
||||||
|
bool carga = false;
|
||||||
|
ifstream archivo;
|
||||||
|
|
||||||
|
inicializa(listaNum);
|
||||||
|
archivo.open("entrada.txt");
|
||||||
|
if (!archivo.is_open()) {
|
||||||
|
cout << "Error al cargar el archivo." << endl;
|
||||||
|
carga = false;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
while ((!archivo.eof()) && (listaNum.contador < MAX_NUM)) {
|
||||||
|
archivo >> listaNum.numeros[listaNum.contador].numero;
|
||||||
|
procesar(listaNum);
|
||||||
|
listaNum.contador++;
|
||||||
|
}
|
||||||
|
carga = true;
|
||||||
|
}
|
||||||
|
archivo.close();
|
||||||
|
|
||||||
|
return carga;
|
||||||
|
}
|
||||||
|
|
||||||
|
void procesar(tListaNumeros& listaNum) {
|
||||||
|
int aux = 0;
|
||||||
|
|
||||||
|
aux = listaNum.numeros[listaNum.contador].numero;
|
||||||
|
while (aux > 10) {
|
||||||
|
aux /= 10;
|
||||||
|
listaNum.numeros[listaNum.contador].contadorCifra++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool guardar(tListaNumeros& listaNum) {
|
||||||
|
bool guardado = false;
|
||||||
|
ofstream archivo;
|
||||||
|
|
||||||
|
archivo.open("salida.txt");
|
||||||
|
if (!archivo.is_open()) {
|
||||||
|
cout << "Error al guardar." << endl;
|
||||||
|
guardado = false;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
archivo << setw(6) << right << "NUMERO" << setw(22) << "NUMERO DE CIFRAS" << endl;
|
||||||
|
archivo << setw(30) << setfill('=') << "\n" << setfill(char(0));
|
||||||
|
for (int i = 0; i < listaNum.contador; i++){
|
||||||
|
archivo << setw(5) << right << listaNum.numeros[i].numero << setw(15) << setfill('.') << listaNum.numeros[i].contadorCifra << setfill(char(0)) << endl;
|
||||||
|
}
|
||||||
|
guardado = true;
|
||||||
|
}
|
||||||
|
archivo.close();
|
||||||
|
|
||||||
|
return guardado;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*EJERCICIO 2*/
|
||||||
|
void iniciaTablero(tPartida& partida) {
|
||||||
|
partida.contador = 0;
|
||||||
|
for (int i = 0; i < DIMENSIONES; i++){
|
||||||
|
for (int j = 0; j < DIMENSIONES; j++){
|
||||||
|
partida.tablero[i][j].pieza = vacia;
|
||||||
|
partida.tablero[i][j].color = blanca;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool cargar(tPartida& partida) {
|
||||||
|
bool carga = false;
|
||||||
|
ifstream archivo;
|
||||||
|
char tipo, color;
|
||||||
|
int fila, columna;
|
||||||
|
|
||||||
|
iniciaTablero(partida);
|
||||||
|
archivo.open("tablero.txt");
|
||||||
|
if (!archivo.is_open()) {
|
||||||
|
cout << "Error al cargar." << endl;
|
||||||
|
carga = false;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
while ((!archivo.eof()) && (partida.contador < NUM_PIEZAS)) {
|
||||||
|
archivo >> tipo;
|
||||||
|
archivo >> color;
|
||||||
|
archivo >> fila;
|
||||||
|
archivo >> columna;
|
||||||
|
colocar(partida, tipo, color, fila, columna);
|
||||||
|
partida.contador++;
|
||||||
|
}
|
||||||
|
carga = true;
|
||||||
|
}
|
||||||
|
archivo.close();
|
||||||
|
|
||||||
|
return carga;
|
||||||
|
}
|
||||||
|
|
||||||
|
void colocar(tPartida& partida, const char& tipo, const char& color, const int& fila, const int& columna) {
|
||||||
|
|
||||||
|
if (color == 'B') {
|
||||||
|
partida.tablero[fila][columna].color = blanca;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
partida.tablero[fila][columna].color = negra;
|
||||||
|
}
|
||||||
|
switch (tipo){
|
||||||
|
case 'P': partida.tablero[fila][columna].pieza = peon; break;
|
||||||
|
case 'T': partida.tablero[fila][columna].pieza = torre; break;
|
||||||
|
case 'A': partida.tablero[fila][columna].pieza = alfil; break;
|
||||||
|
case 'C': partida.tablero[fila][columna].pieza = caballo; break;
|
||||||
|
case 'Q': partida.tablero[fila][columna].pieza = reina; break;
|
||||||
|
case 'R': partida.tablero[fila][columna].pieza = rey; break;
|
||||||
|
default: partida.tablero[fila][columna].pieza = vacia;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void posicion(tPartida& partida) {
|
||||||
|
char continuar = 'N';
|
||||||
|
int fila = 0, columna = 0;
|
||||||
|
|
||||||
|
do {
|
||||||
|
do {
|
||||||
|
cout << "Introduzca una fila: ";
|
||||||
|
cin >> fila;
|
||||||
|
} while (fila < 0 || fila >= DIMENSIONES);
|
||||||
|
do {
|
||||||
|
cout << "Introduzca una columna: ";
|
||||||
|
cin >> columna;
|
||||||
|
} while (columna < 0 || columna >= DIMENSIONES);
|
||||||
|
|
||||||
|
mostrarCasilla(partida, fila, columna);
|
||||||
|
|
||||||
|
cout << "Quiere continuar (S/n)?";
|
||||||
|
cin >> continuar;
|
||||||
|
} while (continuar == 'S' || continuar == 's');
|
||||||
|
}
|
||||||
|
|
||||||
|
void mostrarCasilla(tPartida& partida, const int& fila, const int& columna) {
|
||||||
|
|
||||||
|
switch (partida.tablero[fila][columna].pieza){
|
||||||
|
case peon: cout << "Figura: PEON "; break;
|
||||||
|
case torre: cout << "Figura: TORRE "; break;
|
||||||
|
case alfil: cout << "Figura: ALFIL "; break;
|
||||||
|
case caballo: cout << "Figura: CABALLO "; break;
|
||||||
|
case reina: cout << "Figura: REINA "; break;
|
||||||
|
case rey: cout << "Figura: REY "; break;
|
||||||
|
default:
|
||||||
|
cout << "Figura: NINGUNA" << endl;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (partida.tablero[fila][columna].color){
|
||||||
|
case blanca: cout << "Color: BLANCA" << endl; break;
|
||||||
|
case negra: cout << "Color: NEGRA" << endl; break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Binary file not shown.
@ -0,0 +1,93 @@
|
|||||||
|
12345
|
||||||
|
1
|
||||||
|
2
|
||||||
|
3
|
||||||
|
4
|
||||||
|
5
|
||||||
|
2134
|
||||||
|
65
|
||||||
|
789
|
||||||
|
44
|
||||||
|
432
|
||||||
|
123
|
||||||
|
3
|
||||||
|
561
|
||||||
|
32
|
||||||
|
24567
|
||||||
|
46
|
||||||
|
53767
|
||||||
|
7655
|
||||||
|
12347
|
||||||
|
98765
|
||||||
|
9
|
||||||
|
788
|
||||||
|
654
|
||||||
|
12
|
||||||
|
134
|
||||||
|
5658
|
||||||
|
542
|
||||||
|
456
|
||||||
|
876
|
||||||
|
3
|
||||||
|
56
|
||||||
|
32333
|
||||||
|
3233
|
||||||
|
323
|
||||||
|
32
|
||||||
|
3
|
||||||
|
12345
|
||||||
|
1234
|
||||||
|
123
|
||||||
|
12
|
||||||
|
1
|
||||||
|
12
|
||||||
|
123
|
||||||
|
1234
|
||||||
|
12345
|
||||||
|
9
|
||||||
|
98
|
||||||
|
987
|
||||||
|
9876
|
||||||
|
98765
|
||||||
|
9876
|
||||||
|
987
|
||||||
|
98
|
||||||
|
9
|
||||||
|
5567
|
||||||
|
54664
|
||||||
|
5
|
||||||
|
75
|
||||||
|
342
|
||||||
|
19
|
||||||
|
22
|
||||||
|
23
|
||||||
|
20
|
||||||
|
75
|
||||||
|
57
|
||||||
|
10000
|
||||||
|
1000
|
||||||
|
100
|
||||||
|
10
|
||||||
|
1
|
||||||
|
0
|
||||||
|
96
|
||||||
|
99
|
||||||
|
1996
|
||||||
|
1999
|
||||||
|
98
|
||||||
|
35
|
||||||
|
9
|
||||||
|
8
|
||||||
|
3
|
||||||
|
5
|
||||||
|
7654
|
||||||
|
743
|
||||||
|
5
|
||||||
|
32526
|
||||||
|
2
|
||||||
|
5
|
||||||
|
5676
|
||||||
|
23
|
||||||
|
687
|
||||||
|
54367
|
||||||
|
9
|
@ -0,0 +1,32 @@
|
|||||||
|
P B 0 4
|
||||||
|
P B 1 6
|
||||||
|
P B 4 3
|
||||||
|
P B 2 7
|
||||||
|
P B 6 5
|
||||||
|
P B 5 4
|
||||||
|
P B 2 0
|
||||||
|
P B 0 2
|
||||||
|
R B 1 1
|
||||||
|
Q B 7 3
|
||||||
|
A B 0 0
|
||||||
|
A B 0 3
|
||||||
|
C B 4 4
|
||||||
|
C B 1 5
|
||||||
|
T B 3 2
|
||||||
|
T B 6 6
|
||||||
|
P N 4 2
|
||||||
|
P N 7 5
|
||||||
|
P N 7 7
|
||||||
|
P N 4 1
|
||||||
|
P N 3 1
|
||||||
|
P N 6 1
|
||||||
|
P N 2 2
|
||||||
|
P N 6 0
|
||||||
|
R N 3 0
|
||||||
|
Q N 5 0
|
||||||
|
A N 0 7
|
||||||
|
A N 4 5
|
||||||
|
C N 5 3
|
||||||
|
C N 3 7
|
||||||
|
T N 3 6
|
||||||
|
T N 4 7
|
@ -0,0 +1,205 @@
|
|||||||
|
//Exámen Febrero 2012 - Grupos A, B, D y G.
|
||||||
|
//Fernando Méndez Torrrubiano.
|
||||||
|
|
||||||
|
#include <iostream>
|
||||||
|
#include <string>
|
||||||
|
#include <fstream>
|
||||||
|
#include <iomanip>
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
|
||||||
|
//Constantes:
|
||||||
|
const int NUMEROS = 50;
|
||||||
|
const int N = 5;
|
||||||
|
|
||||||
|
//Tipos:
|
||||||
|
typedef int tNumeros[NUMEROS];
|
||||||
|
typedef struct tSecuencia {
|
||||||
|
tNumeros numero;
|
||||||
|
int contador;
|
||||||
|
};
|
||||||
|
|
||||||
|
//Funciones:
|
||||||
|
void ejecutarMenu();
|
||||||
|
int menu();
|
||||||
|
void inicializa(tSecuencia&);
|
||||||
|
void getSecuencia(tSecuencia&, const int&);
|
||||||
|
double calcularEx(const int&, const int&);
|
||||||
|
int factorial(const int&);
|
||||||
|
bool guardar(tSecuencia&);
|
||||||
|
bool esCapicua(tSecuencia&, int&);
|
||||||
|
bool inverso(const int&);
|
||||||
|
void guardarAnteriores(tSecuencia, const int&);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
|
||||||
|
ejecutarMenu();
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ejecutarMenu() {
|
||||||
|
tSecuencia secuencia;
|
||||||
|
int opc = 1, n = N, i = 0;
|
||||||
|
|
||||||
|
while (opc != 0){
|
||||||
|
opc = menu();
|
||||||
|
switch (opc){
|
||||||
|
case 0: break;
|
||||||
|
case 1:
|
||||||
|
getSecuencia(secuencia, n);
|
||||||
|
n += 2;
|
||||||
|
system("PAUSE");
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
if (guardar(secuencia)) {
|
||||||
|
if (esCapicua(secuencia, i)) {
|
||||||
|
cout << "El numero " << secuencia.numero[i] << " de la posicion " << i + 1<< " es capicua." << endl;
|
||||||
|
guardarAnteriores(secuencia, i);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
cout << "No se ha encontrado ningun numero capicua." << endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
cout << "No se han podido guardar los numeros anteriores." << endl;
|
||||||
|
}
|
||||||
|
system("PAUSE");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
system("cls");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int menu() {
|
||||||
|
int opc = 0;
|
||||||
|
|
||||||
|
cout << setw(25) << setfill('=') << "MENU" << setw(25) << "\n" << setfill(char(0));
|
||||||
|
cout << "1.-Calculos de 'e' elevado a 'x'" << endl;
|
||||||
|
cout << "2.-Detecta capicua" << endl;
|
||||||
|
cout << "0.-Salir" << endl;
|
||||||
|
cout << setw(50) << setfill('=') << "\n" << setfill(char(0));
|
||||||
|
|
||||||
|
do {
|
||||||
|
cout << "Introduzca una opcion: ";
|
||||||
|
cin >> opc;
|
||||||
|
} while (opc < 0 || opc > 2);
|
||||||
|
|
||||||
|
return opc;
|
||||||
|
}
|
||||||
|
|
||||||
|
void inicializa(tSecuencia& secuencia) {
|
||||||
|
secuencia.contador = 0;
|
||||||
|
for (int i = 0; i < NUMEROS; i++){
|
||||||
|
secuencia.numero[i] = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void getSecuencia(tSecuencia& secuencia, const int& n) {
|
||||||
|
inicializa(secuencia);
|
||||||
|
|
||||||
|
do {
|
||||||
|
cout << "Introduzca un numero (-1 para terminar): ";
|
||||||
|
cin >> secuencia.numero[secuencia.contador];
|
||||||
|
if (secuencia.numero[secuencia.contador] >= 0) {
|
||||||
|
secuencia.contador++;
|
||||||
|
}
|
||||||
|
} while ((secuencia.numero[secuencia.contador] != -1));
|
||||||
|
|
||||||
|
cout << endl;
|
||||||
|
for (int i = 0; i < secuencia.contador; i++){
|
||||||
|
cout << "'e' elevado a " << secuencia.numero[i] << " da como resultado: " << fixed << setprecision(2) << calcularEx(secuencia.numero[i], n) << endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
double calcularEx(const int& x, const int& n) {
|
||||||
|
double eALAx = 0;
|
||||||
|
|
||||||
|
for (int i = 0; i < n; i++){
|
||||||
|
eALAx += (pow(x, i)) / (factorial(i));
|
||||||
|
}
|
||||||
|
|
||||||
|
return eALAx;
|
||||||
|
}
|
||||||
|
|
||||||
|
int factorial(const int& n) {
|
||||||
|
int factorial = 1;
|
||||||
|
|
||||||
|
if (n == 0) {
|
||||||
|
factorial = 1;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
for (int i = 1; i <= n; i++) {
|
||||||
|
factorial *= i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return factorial;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool guardar(tSecuencia& secuencia) {
|
||||||
|
bool guardado = false;
|
||||||
|
ofstream archivo;
|
||||||
|
|
||||||
|
archivo.open("input.txt");
|
||||||
|
if (!archivo.is_open()) {
|
||||||
|
cout << "Error al guardar." << endl;
|
||||||
|
guardado = false;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
for (int i = 0; i <= secuencia.contador; i++){
|
||||||
|
archivo << secuencia.numero[i] << endl;
|
||||||
|
}
|
||||||
|
guardado = true;
|
||||||
|
}
|
||||||
|
archivo.close();
|
||||||
|
|
||||||
|
return guardado;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool esCapicua(tSecuencia& secuencia, int& i) {
|
||||||
|
bool encontrado = false;
|
||||||
|
|
||||||
|
while ((!encontrado) && (i < secuencia.contador)) {
|
||||||
|
if (inverso(secuencia.numero[i])) {
|
||||||
|
encontrado = true;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return encontrado;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool inverso(const int& numero) {
|
||||||
|
string num = to_string(numero);
|
||||||
|
string aux;
|
||||||
|
|
||||||
|
if (numero >= 10) {
|
||||||
|
for (int i = num.length() - 1; i >= 0; i--) {
|
||||||
|
aux += num[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return (num == aux) ? true : false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void guardarAnteriores(tSecuencia secuencia, const int& i) {
|
||||||
|
ofstream archivo;
|
||||||
|
|
||||||
|
archivo.open("output.txt");
|
||||||
|
if (!archivo.is_open()) {
|
||||||
|
cout << "Error al guardar." << endl;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
for (int j = 0; j < i; j++) {
|
||||||
|
archivo << secuencia.numero[j] << endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
archivo.close();
|
||||||
|
}
|
Binary file not shown.
@ -0,0 +1,194 @@
|
|||||||
|
//Examen Febrero 2013 - Grupos A, B, D y G.
|
||||||
|
//Fernando Méndez Torrubiano
|
||||||
|
|
||||||
|
#include <iostream>
|
||||||
|
#include <string>
|
||||||
|
#include <fstream>
|
||||||
|
#include <iomanip>
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
|
||||||
|
//Constantes:
|
||||||
|
const int MAX_NUM = 100;
|
||||||
|
|
||||||
|
//Tipos:
|
||||||
|
typedef int tNumeros[MAX_NUM];
|
||||||
|
typedef struct tSecuencia {
|
||||||
|
tNumeros numeros;
|
||||||
|
int contador;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
//Funciones:
|
||||||
|
void ejecutarMenu();
|
||||||
|
int menu();
|
||||||
|
bool generar(tSecuencia&, const int&);
|
||||||
|
bool guardar(tSecuencia&);
|
||||||
|
void recorrer(tSecuencia&);
|
||||||
|
bool esFeliz(int&);
|
||||||
|
bool buscar(tSecuencia&, int&, int&);
|
||||||
|
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
|
||||||
|
ejecutarMenu();
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ejecutarMenu() {
|
||||||
|
tSecuencia secuencia;
|
||||||
|
int opc = 1, maximo, error, i = 1;
|
||||||
|
bool generado = false;
|
||||||
|
|
||||||
|
while (opc != 0) {
|
||||||
|
opc = menu();
|
||||||
|
switch (opc){
|
||||||
|
case 0: break;
|
||||||
|
case 1:
|
||||||
|
cout << "Introduzca el limite superior para los numeros de la secuencia: ";
|
||||||
|
cin >> maximo;
|
||||||
|
if (generar(secuencia, maximo)) {
|
||||||
|
cout << "Secuencia generada correctamente." << endl;
|
||||||
|
generado = true;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
cout << "Error al generar la secuencia." << endl;
|
||||||
|
}
|
||||||
|
system("PAUSE");
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
if (generado == true) {
|
||||||
|
recorrer(secuencia);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
cout << "Primero debes generar una secuencia." << endl;
|
||||||
|
}
|
||||||
|
system("PAUSE");
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
if (generado == true) {
|
||||||
|
cout << "Introduzca un error: ";
|
||||||
|
cin >> error;
|
||||||
|
if (buscar(secuencia, error, i)) {
|
||||||
|
cout << "Encontrado en la linea " << i << " (diferencia: " << error << ")." << endl;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
cout << "No encontrado." << endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
cout << "Primero debes generar una secuencia." << endl;
|
||||||
|
}
|
||||||
|
system("PAUSE");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
system("cls");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int menu() {
|
||||||
|
int opc = 0;
|
||||||
|
|
||||||
|
cout << setw(25) << setfill('=') << "MENU" << setw(25) << "\n" << setfill(char(0));
|
||||||
|
cout << "1.-Generar una secuencia." << endl;
|
||||||
|
cout << "2.-Procesar la secuencia" << endl;
|
||||||
|
cout << "3.-Buscar en la secuencia." << endl;
|
||||||
|
cout << "0.-Salir" << endl;
|
||||||
|
cout << setw(50) << setfill('=') << "\n" << setfill(char(0));
|
||||||
|
|
||||||
|
do {
|
||||||
|
cout << "Introduzca una opcion: ";
|
||||||
|
cin >> opc;
|
||||||
|
} while (opc < 0 || opc > 3);
|
||||||
|
|
||||||
|
return opc;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool generar(tSecuencia& secuencia, const int& maximo) {
|
||||||
|
secuencia.contador = 0;
|
||||||
|
|
||||||
|
do{
|
||||||
|
cout << "Introduzca un numero (0 para terminar): ";
|
||||||
|
cin >> secuencia.numeros[secuencia.contador];
|
||||||
|
if ((secuencia.numeros[secuencia.contador] < maximo) && (secuencia.numeros[secuencia.contador] > 0)) {
|
||||||
|
secuencia.contador++;
|
||||||
|
}
|
||||||
|
} while ((secuencia.numeros[secuencia.contador] != 0));
|
||||||
|
|
||||||
|
return guardar(secuencia) ? true : false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool guardar(tSecuencia& secuencia) {
|
||||||
|
bool save = false;
|
||||||
|
ofstream archivo;
|
||||||
|
|
||||||
|
archivo.open("datos.txt");
|
||||||
|
if (!archivo.is_open()) {
|
||||||
|
save = false;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
for (int i = 0; i < secuencia.contador; i++){
|
||||||
|
archivo << secuencia.numeros[i] << endl;
|
||||||
|
}
|
||||||
|
archivo << -1;
|
||||||
|
save = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return save;
|
||||||
|
}
|
||||||
|
|
||||||
|
void recorrer(tSecuencia& secuencia) {
|
||||||
|
int numero = 0;
|
||||||
|
|
||||||
|
for (int i = 0; i < secuencia.contador; i++){
|
||||||
|
numero = secuencia.numeros[i];
|
||||||
|
if (esFeliz(numero)) { cout << "El numero: " << secuencia.numeros[i] << " ES FELIZ." << endl; }
|
||||||
|
else { cout << "El numero: " << secuencia.numeros[i] << " NO ES FELIZ." << endl; }
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool esFeliz(int& num) {
|
||||||
|
int digito[10] = { 0,0,0,0,0,0,0,0,0,0 }, i = 0, aux;
|
||||||
|
|
||||||
|
do {
|
||||||
|
if (num > 10) { //Igualamos una variable auxiliar al valor anterior del número (si el número, es mayor de 10).
|
||||||
|
aux = num;
|
||||||
|
}
|
||||||
|
else { //Si el número es menor que 10, igualamos el auxiliar a 10 para que entre en el bucle y procese el número.
|
||||||
|
aux = 10;
|
||||||
|
}
|
||||||
|
while (aux >= 10) { //Si el auxiliar es mayor o igual a 10, significa que el número aun tiene más de dos cifras y por tanto hay que continuar extrayendo dichas cifras.
|
||||||
|
digito[i] = num % 10; //Hacemos el módulo 10 del número para extraer el digito correspondiente a las unidades.
|
||||||
|
num -= digito[i]; //Restamos al número el valor de las unidades, para hacerlo potencia de 10.
|
||||||
|
aux = num; //Igualamos una variable auxiliar al valor anterior del número. Porque en la siguiente comprobación del bucle, el número estará dividido entre 10 y daría una vuelta menos.
|
||||||
|
num /= 10; //Dividimos el número entre 10 para en la siguiente vuelta del bucle, seguir extrayendo el próximo dígito, que antes eran las decenas y ahora correcponderá a las unidades.
|
||||||
|
i++; //Sumamos uno para guardar la siguiente cifra en la próxima posición del vector. Como vamos a sumar los dígitos, nos da igual que se guarden en orden inverso.
|
||||||
|
}
|
||||||
|
|
||||||
|
num = 0;
|
||||||
|
for (int j = 0; j < i; j++) {
|
||||||
|
num += pow(digito[j], 2); //Calculamos la suma de las potencias cuadradas de cada uno de los dígitos del número.
|
||||||
|
}
|
||||||
|
i = 0;
|
||||||
|
} while (num >= 10);
|
||||||
|
|
||||||
|
return (num == 1) ? true : false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool buscar(tSecuencia& secuencia, int& error, int& i) {
|
||||||
|
bool encontrado = false;
|
||||||
|
|
||||||
|
while ((!encontrado) && (i < secuencia.contador)) {
|
||||||
|
if ((secuencia.numeros[i] - secuencia.numeros[i - 1]) < error) {
|
||||||
|
error = secuencia.numeros[i] - secuencia.numeros[i - 1];
|
||||||
|
encontrado = true;
|
||||||
|
}
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
|
||||||
|
return encontrado;
|
||||||
|
}
|
Binary file not shown.
@ -0,0 +1,5 @@
|
|||||||
|
7
|
||||||
|
97
|
||||||
|
137
|
||||||
|
250
|
||||||
|
-1
|
@ -0,0 +1,243 @@
|
|||||||
|
//Examen Febrero 2014 - Grupos A, B e I.
|
||||||
|
//Fernando Méndez Torrubiano.
|
||||||
|
|
||||||
|
#include <iostream>
|
||||||
|
#include <string>
|
||||||
|
#include <fstream>
|
||||||
|
#include <iomanip>
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
//Constantes:
|
||||||
|
const int NPO = 10;
|
||||||
|
const int NPNecesitados = 1;
|
||||||
|
|
||||||
|
|
||||||
|
//Tipos:
|
||||||
|
typedef struct tProducto {
|
||||||
|
string nombre;
|
||||||
|
float peso;
|
||||||
|
float precio;
|
||||||
|
};
|
||||||
|
typedef tProducto tProductos[NPO];
|
||||||
|
typedef struct tListaProductos {
|
||||||
|
tProductos producto;
|
||||||
|
int contador;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
//Funciones:
|
||||||
|
void inicializa(tListaProductos&);
|
||||||
|
bool cargar(tListaProductos&);
|
||||||
|
void ejecutarMenu(tListaProductos&);
|
||||||
|
int menu();
|
||||||
|
bool guardar(tListaProductos&);
|
||||||
|
tListaProductos leerCesta(tListaProductos&);
|
||||||
|
int buscarProducto(tListaProductos&, const string&);
|
||||||
|
void realizarCompra(tListaProductos&, tListaProductos&);
|
||||||
|
void mostrarAgotados(tListaProductos&);
|
||||||
|
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
tListaProductos productos;
|
||||||
|
|
||||||
|
if (cargar(productos)) {
|
||||||
|
ejecutarMenu(productos);
|
||||||
|
if (guardar(productos)) {
|
||||||
|
cout << "Guardado correctamente." << endl;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
cout << "Error al guardar." << endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
cout << "Fin del programa." << endl;
|
||||||
|
}
|
||||||
|
system("PAUSE");
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void inicializa(tListaProductos& productos) {
|
||||||
|
productos.contador = 0;
|
||||||
|
for (int i = 0; i < NPO; i++){
|
||||||
|
productos.producto[i].nombre = "";
|
||||||
|
productos.producto[i].peso = 0;
|
||||||
|
productos.producto[i].precio = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool cargar(tListaProductos& productos) {
|
||||||
|
bool carga = false;
|
||||||
|
ifstream archivo;
|
||||||
|
|
||||||
|
inicializa(productos);
|
||||||
|
archivo.open("almacen.txt");
|
||||||
|
if (!archivo.is_open()) {
|
||||||
|
cout << "No se ha encotrado el archivo." << endl;
|
||||||
|
carga = false;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
getline(archivo, productos.producto[productos.contador].nombre);
|
||||||
|
while ((productos.producto[productos.contador].nombre != "XXX") && (productos.contador < NPO)) {
|
||||||
|
archivo >> productos.producto[productos.contador].peso;
|
||||||
|
archivo >> productos.producto[productos.contador].precio;
|
||||||
|
productos.contador++;
|
||||||
|
archivo.ignore(1, ' ');
|
||||||
|
getline(archivo, productos.producto[productos.contador].nombre);
|
||||||
|
}
|
||||||
|
carga = true;
|
||||||
|
}
|
||||||
|
archivo.close();
|
||||||
|
|
||||||
|
return carga;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ejecutarMenu(tListaProductos& productos) {
|
||||||
|
tListaProductos cesta;
|
||||||
|
int opc = 1;
|
||||||
|
|
||||||
|
while (opc != 0) {
|
||||||
|
opc = menu();
|
||||||
|
switch (opc){
|
||||||
|
case 0: break;
|
||||||
|
case 1: realizarCompra(productos, cesta); system("PAUSE"); break;
|
||||||
|
case 2: mostrarAgotados(productos); system("PAUSE"); break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
system("cls");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int menu() {
|
||||||
|
int opc = 0;
|
||||||
|
|
||||||
|
cout << setw(20) << setfill('=') << "MENU" << setw(20) << "\n" << setfill(char(0));
|
||||||
|
cout << "1.-Realizar la compra" << endl;
|
||||||
|
cout << "2.-Ver productos agotados" << endl;
|
||||||
|
cout << "0.-Salir" << endl;
|
||||||
|
cout << setw(40) << setfill('=') << "\n" << setfill(char(0));
|
||||||
|
|
||||||
|
do {
|
||||||
|
cout << "Introduzca una opcion: ";
|
||||||
|
cin >> opc;
|
||||||
|
} while (opc < 0 || opc > 2);
|
||||||
|
|
||||||
|
return opc;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool guardar(tListaProductos& productos) {
|
||||||
|
bool guardado = false;
|
||||||
|
ofstream archivo;
|
||||||
|
|
||||||
|
archivo.open("almacen.txt");
|
||||||
|
if (!archivo.is_open()) {
|
||||||
|
guardado = false;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
for (int i = 0; i < productos.contador; i++){
|
||||||
|
archivo << productos.producto[i].nombre << endl;
|
||||||
|
archivo << productos.producto[i].peso << endl;
|
||||||
|
archivo << productos.producto[i].precio << endl;
|
||||||
|
}
|
||||||
|
archivo << "XXX";
|
||||||
|
guardado = true;
|
||||||
|
}
|
||||||
|
archivo.close();
|
||||||
|
|
||||||
|
return guardado;
|
||||||
|
}
|
||||||
|
|
||||||
|
tListaProductos leerCesta(tListaProductos& productos) {
|
||||||
|
tListaProductos cesta;
|
||||||
|
cesta.contador = 0;
|
||||||
|
string nombre;
|
||||||
|
int pos = 0;
|
||||||
|
|
||||||
|
while (cesta.contador < NPNecesitados) {
|
||||||
|
do {
|
||||||
|
cout << "Introduzca un produto: ";
|
||||||
|
getline(cin, nombre);
|
||||||
|
pos = buscarProducto(productos, nombre);
|
||||||
|
} while (pos == -1);
|
||||||
|
cesta.producto[cesta.contador].nombre = nombre;
|
||||||
|
do {
|
||||||
|
cout << "Introduzca cantidad (KG): ";
|
||||||
|
cin >> cesta.producto[cesta.contador].peso;
|
||||||
|
} while (cesta.producto[cesta.contador].peso > productos.producto[pos].peso);
|
||||||
|
productos.producto[pos].peso -= cesta.producto[cesta.contador].peso;
|
||||||
|
cesta.producto[cesta.contador].precio = cesta.producto[cesta.contador].peso * productos.producto[pos].precio;
|
||||||
|
cesta.contador++;
|
||||||
|
}
|
||||||
|
|
||||||
|
return cesta;
|
||||||
|
}
|
||||||
|
|
||||||
|
//SCARLETT JONHANSON ESTUVO AQUÍ
|
||||||
|
//No, solo eres eva intentando gastar bromas
|
||||||
|
//NO NO NO NO NOOOOO, bueno si. Me hacia ilu jo :,(
|
||||||
|
//Eres idiota
|
||||||
|
//Teniendo en cunta que tu eres yo y que yo soy tu, te estas llamando idiota a ti misma.
|
||||||
|
//-_-
|
||||||
|
//:3
|
||||||
|
//PONTE A ESTUDIAR O TE MATO!!
|
||||||
|
// AH! 0-0 si señora.
|
||||||
|
|
||||||
|
|
||||||
|
int buscarProducto(tListaProductos& productos, const string& nombre) {
|
||||||
|
int pos = productos.contador;
|
||||||
|
bool encontrado = false;
|
||||||
|
|
||||||
|
while ((!encontrado) && (pos > -1)) {
|
||||||
|
if (productos.producto[pos].nombre == nombre) {
|
||||||
|
encontrado = true;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
pos--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return pos;
|
||||||
|
}
|
||||||
|
|
||||||
|
void realizarCompra(tListaProductos& productos, tListaProductos& cesta) {
|
||||||
|
|
||||||
|
cout << setw(15) << right << "NOMBRE"
|
||||||
|
<< setw(15) << "CANTIDAD"
|
||||||
|
<< setw(15) << "PRECIO" << endl;
|
||||||
|
cout << setw(25) << setfill('=') << "ALMACEN" << setw(25) << "\n" << setfill(char(0));
|
||||||
|
for (int i = 0; i < productos.contador; i++) {
|
||||||
|
cout << setw(15) << right << productos.producto[i].nombre
|
||||||
|
<< setw(15) << productos.producto[i].peso
|
||||||
|
<< setw(15) << productos.producto[i].precio << endl;
|
||||||
|
}
|
||||||
|
cout << setw(50) << setfill('=') << "\n" << setfill(char(0));
|
||||||
|
|
||||||
|
cesta = leerCesta(productos);
|
||||||
|
|
||||||
|
cout << setw(15) << right << "NOMBRE"
|
||||||
|
<< setw(15) << "CANTIDAD"
|
||||||
|
<< setw(15) << "PRECIO" << endl;
|
||||||
|
cout << setw(25) << setfill('=') << "CESTA" << setw(25) << "\n" << setfill(char(0));
|
||||||
|
for (int i = 0; i < cesta.contador; i++){
|
||||||
|
cout << setw(15) << right << cesta.producto[i].nombre
|
||||||
|
<< setw(15) << cesta.producto[i].peso
|
||||||
|
<< setw(15) << cesta.producto[i].precio << endl;
|
||||||
|
}
|
||||||
|
cout << setw(50) << setfill('=') << "\n" << setfill(char(0));
|
||||||
|
}
|
||||||
|
|
||||||
|
void mostrarAgotados(tListaProductos& productos) {
|
||||||
|
cout << setw(15) << right << "NOMBRE"
|
||||||
|
<< setw(15) << "CANTIDAD"
|
||||||
|
<< setw(15) << "PRECIO" << endl;
|
||||||
|
cout << setw(25) << setfill('=') << "AGOTADOS" << setw(25) << "\n" << setfill(char(0));
|
||||||
|
for (int i = 0; i < productos.contador; i++) {
|
||||||
|
if (productos.producto[i].peso == 0) {
|
||||||
|
cout << setw(15) << right << productos.producto[i].nombre
|
||||||
|
<< setw(15) << productos.producto[i].peso
|
||||||
|
<< setw(15) << productos.producto[i].precio << endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
cout << setw(50) << setfill('=') << "\n" << setfill(char(0));
|
||||||
|
}
|
Binary file not shown.
@ -0,0 +1,25 @@
|
|||||||
|
Atun rojo
|
||||||
|
80.00
|
||||||
|
15.95
|
||||||
|
Besugo
|
||||||
|
80.70
|
||||||
|
15.95
|
||||||
|
Mejillon
|
||||||
|
12.50
|
||||||
|
3.00
|
||||||
|
Caballa
|
||||||
|
355.00
|
||||||
|
3.00
|
||||||
|
Lubina salvaje
|
||||||
|
410.00
|
||||||
|
5.85
|
||||||
|
Gamba
|
||||||
|
150.00
|
||||||
|
9.95
|
||||||
|
Merluza
|
||||||
|
475.00
|
||||||
|
12.50
|
||||||
|
Salmonete
|
||||||
|
200.40
|
||||||
|
6.30
|
||||||
|
XXX
|
@ -0,0 +1,240 @@
|
|||||||
|
//Exámen Febrero 2014 - Grupos C, E y F.
|
||||||
|
//Fernando Méndez Torrubinao
|
||||||
|
|
||||||
|
#include <iostream>
|
||||||
|
#include <string>
|
||||||
|
#include <fstream>
|
||||||
|
#include <iomanip>
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
|
||||||
|
//Constantes:
|
||||||
|
const int NUM_PLAYERS = 10;
|
||||||
|
|
||||||
|
//Tipos:
|
||||||
|
typedef struct tJugador {
|
||||||
|
string nombre;
|
||||||
|
string equipo;
|
||||||
|
int numPartidos;
|
||||||
|
int minutos;
|
||||||
|
int goles;
|
||||||
|
};
|
||||||
|
typedef tJugador tJugadores[NUM_PLAYERS];
|
||||||
|
typedef struct tListaJugadores {
|
||||||
|
tJugadores jugador;
|
||||||
|
int contador;
|
||||||
|
};
|
||||||
|
|
||||||
|
//Funciones:
|
||||||
|
void inicializa(tListaJugadores&);
|
||||||
|
bool cargar(tListaJugadores&);
|
||||||
|
void ejecutarMenu(tListaJugadores&);
|
||||||
|
int menu();
|
||||||
|
void filtrarLista(tListaJugadores&, const string&);
|
||||||
|
bool actualizarJugador(tListaJugadores&, const string&, const int&, const int&, int& pos);
|
||||||
|
void consultarMaxGoleador(tListaJugadores& jugadores);
|
||||||
|
void guardar(tListaJugadores&);
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
tListaJugadores jugadores;
|
||||||
|
|
||||||
|
if (cargar(jugadores)) {
|
||||||
|
ejecutarMenu(jugadores);
|
||||||
|
guardar(jugadores);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
cout << "Fin del programa." << endl;
|
||||||
|
system("PAUSE");
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void inicializa(tListaJugadores& jugadores) {
|
||||||
|
jugadores.contador = 0;
|
||||||
|
for (int i = 0; i < NUM_PLAYERS; i++){
|
||||||
|
jugadores.jugador[i].nombre = "";
|
||||||
|
jugadores.jugador[i].equipo = "";
|
||||||
|
jugadores.jugador[i].numPartidos = 0;
|
||||||
|
jugadores.jugador[i].minutos = 0;
|
||||||
|
jugadores.jugador[i].goles = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool cargar(tListaJugadores& jugadores) {
|
||||||
|
bool cargado = false;
|
||||||
|
ifstream archivo;
|
||||||
|
|
||||||
|
inicializa(jugadores);
|
||||||
|
archivo.open("players.txt");
|
||||||
|
if (!archivo.is_open()) {
|
||||||
|
cout << "Error al cargar el archivo." << endl;
|
||||||
|
cargado = false;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
archivo >> jugadores.jugador[jugadores.contador].nombre;
|
||||||
|
while ((jugadores.jugador[jugadores.contador].nombre != "XXX") && (jugadores.contador < NUM_PLAYERS)) {
|
||||||
|
archivo >> jugadores.jugador[jugadores.contador].equipo;
|
||||||
|
archivo >> jugadores.jugador[jugadores.contador].numPartidos;
|
||||||
|
archivo >> jugadores.jugador[jugadores.contador].minutos;
|
||||||
|
archivo >> jugadores.jugador[jugadores.contador].goles;
|
||||||
|
jugadores.contador++;
|
||||||
|
archivo >> jugadores.jugador[jugadores.contador].nombre;
|
||||||
|
}
|
||||||
|
cargado = true;
|
||||||
|
}
|
||||||
|
archivo.close();
|
||||||
|
|
||||||
|
return cargado;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ejecutarMenu(tListaJugadores& jugadores) {
|
||||||
|
int opc = 1;
|
||||||
|
string codigo, nombre;
|
||||||
|
int min, goles, pos = 0;;
|
||||||
|
|
||||||
|
while (opc != 0) {
|
||||||
|
opc = menu();
|
||||||
|
switch (opc){
|
||||||
|
case 0: break;
|
||||||
|
case 1:
|
||||||
|
cout << "Introduzca equipo ('TODOS' para ver todos los jugadores): ";
|
||||||
|
cin >> codigo;
|
||||||
|
filtrarLista(jugadores, codigo);
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
cout << "Introduzca nombre del jugador: ";
|
||||||
|
cin >> nombre;
|
||||||
|
cout << "Introduzca minutos jugados: ";
|
||||||
|
cin >> min;
|
||||||
|
cout << "Introduzca goles marcados: ";
|
||||||
|
cin >> goles;
|
||||||
|
if (actualizarJugador(jugadores, nombre, min, goles, pos)) {
|
||||||
|
cout << "Actualizado correctamente:" << endl;
|
||||||
|
cout << setw(25) << setfill('-') << "\n" << setfill(char(0))
|
||||||
|
<< jugadores.jugador[pos].nombre << setw(5)
|
||||||
|
<< jugadores.jugador[pos].equipo << setw(5)
|
||||||
|
<< jugadores.jugador[pos].numPartidos << setw(5)
|
||||||
|
<< jugadores.jugador[pos].minutos << setw(5)
|
||||||
|
<< jugadores.jugador[pos].goles << endl
|
||||||
|
<< setw(25) << setfill('-') << "\n" << setfill(char(0));
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
cout << "Error al actualizar" << endl;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 3: consultarMaxGoleador(jugadores); break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
system("PAUSE");
|
||||||
|
system("cls");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int menu() {
|
||||||
|
int opc = 0;
|
||||||
|
|
||||||
|
cout << setw(40) << setfill('=') << "\n" << setfill(char(0));
|
||||||
|
cout << "1.-Filtrar lista." << endl;
|
||||||
|
cout << "2.-Actualizar jugador." << endl;
|
||||||
|
cout << "3.-Consultar maximo goleador" << endl;
|
||||||
|
cout << "0.-SALIR" << endl;
|
||||||
|
cout << setw(40) << setfill('=') << "\n" << setfill(char(0));
|
||||||
|
|
||||||
|
do {
|
||||||
|
cout << "Introduzca una opcion: ";
|
||||||
|
cin >> opc;
|
||||||
|
} while (opc < 0 || opc > 3);
|
||||||
|
|
||||||
|
return opc;
|
||||||
|
}
|
||||||
|
|
||||||
|
void filtrarLista(tListaJugadores& jugadores, const string& codigo) {
|
||||||
|
cout << setw(70) << setfill('_') << "\n" << setfill(char(0));
|
||||||
|
cout << endl << setw(15) << right << "JUGADOR"
|
||||||
|
<< setw(20) << "PARTIDOS JUGADOS"
|
||||||
|
<< setw(20) << "MINUTOS JUGADOS"
|
||||||
|
<< setw(10) << "GOLES" << endl;
|
||||||
|
cout << setw(70) << setfill('_') << "\n" << endl;
|
||||||
|
cout << setw(35) << setfill('=') << codigo << setw(35) << "\n" << setfill(char(0));
|
||||||
|
for (int i = 0; i < jugadores.contador; i++){
|
||||||
|
if ((jugadores.jugador[i].equipo == codigo) || (codigo == "TODOS") || (codigo == "todos")) {
|
||||||
|
cout << setw(15) << right << jugadores.jugador[i].nombre
|
||||||
|
<< setw(15) << jugadores.jugador[i].numPartidos
|
||||||
|
<< setw(20) << jugadores.jugador[i].minutos
|
||||||
|
<< setw(15) << jugadores.jugador[i].goles << endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
cout << setw(70) << setfill('=') << "\n" << setfill(char(0));
|
||||||
|
}
|
||||||
|
|
||||||
|
bool actualizarJugador(tListaJugadores& jugadores, const string& nombre, const int& min, const int& goles, int& i) {
|
||||||
|
bool actualizado = false;
|
||||||
|
|
||||||
|
while ((!actualizado) && (i < jugadores.contador)) {
|
||||||
|
if ((jugadores.jugador[i].nombre == nombre) && (min > 0) && (goles > 0)) {
|
||||||
|
jugadores.jugador[i].minutos += min;
|
||||||
|
jugadores.jugador[i].goles += goles;
|
||||||
|
jugadores.jugador[i].numPartidos++;
|
||||||
|
actualizado = true;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return actualizado;
|
||||||
|
}
|
||||||
|
|
||||||
|
void consultarMaxGoleador(tListaJugadores& jugadores) {
|
||||||
|
int maxGoles = 0;
|
||||||
|
tListaJugadores goleadores;
|
||||||
|
|
||||||
|
for (int i = 0; i < jugadores.contador; i++){
|
||||||
|
if (jugadores.jugador[i].goles > maxGoles) {
|
||||||
|
maxGoles = jugadores.jugador[i].goles;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
goleadores.contador = 0;
|
||||||
|
cout << setw(20) << setfill('-') << "PICHICHIS" << setw(20) << setfill('-') << "\n" << setfill(char(0));
|
||||||
|
for (int i = 0; i < jugadores.contador; i++){
|
||||||
|
if (jugadores.jugador[i].goles == maxGoles) {
|
||||||
|
goleadores.jugador[goleadores.contador].nombre = jugadores.jugador[i].nombre;
|
||||||
|
goleadores.jugador[goleadores.contador].equipo = jugadores.jugador[i].equipo;
|
||||||
|
goleadores.jugador[goleadores.contador].numPartidos = jugadores.jugador[i].numPartidos;
|
||||||
|
goleadores.jugador[goleadores.contador].minutos = jugadores.jugador[i].minutos;
|
||||||
|
goleadores.jugador[goleadores.contador].goles = jugadores.jugador[i].goles;
|
||||||
|
cout << setw(10) << right << goleadores.jugador[goleadores.contador].nombre << setw(5)
|
||||||
|
<< goleadores.jugador[goleadores.contador].equipo << setw(5)
|
||||||
|
<< goleadores.jugador[goleadores.contador].numPartidos << setw(5)
|
||||||
|
<< goleadores.jugador[goleadores.contador].minutos << setw(5)
|
||||||
|
<< goleadores.jugador[goleadores.contador].goles << endl;
|
||||||
|
goleadores.contador++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
cout << setw(40) << setfill('-') << "\n" << setfill(char(0));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void guardar(tListaJugadores& jugadores) {
|
||||||
|
ofstream archivo;
|
||||||
|
|
||||||
|
archivo.open("players.txt");
|
||||||
|
if (!archivo.is_open()) {
|
||||||
|
cout << "Error al guardar." << endl;
|
||||||
|
system("PAUSE");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
for (int i = 0; i < jugadores.contador; i++){
|
||||||
|
archivo << jugadores.jugador[i].nombre << " "
|
||||||
|
<< jugadores.jugador[i].equipo << " "
|
||||||
|
<< jugadores.jugador[i].numPartidos << " "
|
||||||
|
<< jugadores.jugador[i].minutos << " "
|
||||||
|
<< jugadores.jugador[i].goles << endl;
|
||||||
|
}
|
||||||
|
archivo << "XXX";
|
||||||
|
}
|
||||||
|
archivo.close();
|
||||||
|
}
|
Binary file not shown.
@ -0,0 +1,7 @@
|
|||||||
|
Messi BCN 9 810 7
|
||||||
|
Oblack ATM 17 1545 0
|
||||||
|
Griezmann ATM 15 1312 4
|
||||||
|
Bale RMA 5 457 3
|
||||||
|
Casillas RMA 0 0 0
|
||||||
|
Costa ATM 10 755 9
|
||||||
|
XXX
|
@ -0,0 +1,281 @@
|
|||||||
|
//Examen Febrero 2014 - Grupos D y G.
|
||||||
|
//Fernando Méndez Torrubiano
|
||||||
|
|
||||||
|
#include <iostream>
|
||||||
|
#include <string>
|
||||||
|
#include <fstream>
|
||||||
|
#include <iomanip>
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
//Constantes:
|
||||||
|
const int NP = 10;
|
||||||
|
const int CLASES = 4;
|
||||||
|
|
||||||
|
//Tipos:
|
||||||
|
typedef enum tClase{papeleria, alimentacion, limpieza, informatica};
|
||||||
|
typedef struct tProveedor {
|
||||||
|
string CIF;
|
||||||
|
tClase clase;
|
||||||
|
int pedidos;
|
||||||
|
int coste;
|
||||||
|
};
|
||||||
|
typedef tProveedor tProveedores[NP];
|
||||||
|
typedef struct tListaProveedores {
|
||||||
|
tProveedores proveedor;
|
||||||
|
int contador;
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef struct tGastos {
|
||||||
|
tClase clase;
|
||||||
|
int gasto;
|
||||||
|
};
|
||||||
|
typedef tGastos tListaGastos[CLASES];
|
||||||
|
|
||||||
|
//Funciones:
|
||||||
|
void inicializa(tListaProveedores&);
|
||||||
|
bool carga(tListaProveedores&);
|
||||||
|
void tIntToClase(tListaProveedores&, const int&);
|
||||||
|
void ejecutarMenu(tListaProveedores&);
|
||||||
|
int menu();
|
||||||
|
bool guardar(tListaProveedores&);
|
||||||
|
int buscarProveedor(tListaProveedores&, const string&);
|
||||||
|
void nuevoPedido(tListaProveedores&, const string&, const int&);
|
||||||
|
void mostrar(tListaProveedores&);
|
||||||
|
void mostrarIntervalo(tListaProveedores&, const int&, const int&);
|
||||||
|
void totalesXclase(tListaProveedores&);
|
||||||
|
void iniciaGastos(tListaGastos&);
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
tListaProveedores proveedores;
|
||||||
|
|
||||||
|
if (carga(proveedores)) {
|
||||||
|
ejecutarMenu(proveedores);
|
||||||
|
if (guardar(proveedores)) {
|
||||||
|
cout << "Guardado correctamente." << endl;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
cout << "Error al guardar el archivo." << endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
cout << "Error al cargar el archivo." << endl;
|
||||||
|
system("PAUSE");
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void inicializa(tListaProveedores& proveedores) {
|
||||||
|
proveedores.contador = 0;
|
||||||
|
for (int i = 0; i < NP; i++){
|
||||||
|
proveedores.proveedor[i].CIF = "";
|
||||||
|
proveedores.proveedor[i].clase = informatica;
|
||||||
|
proveedores.proveedor[i].pedidos = 0;
|
||||||
|
proveedores.proveedor[i].coste = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool carga(tListaProveedores& proveedores) {
|
||||||
|
bool cargado = false;
|
||||||
|
ifstream archivo;
|
||||||
|
int claseAUX;
|
||||||
|
|
||||||
|
inicializa(proveedores);
|
||||||
|
archivo.open("proveedores.txt");
|
||||||
|
if (!archivo.is_open()) {
|
||||||
|
cargado = false;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
archivo >> proveedores.proveedor[proveedores.contador].CIF;
|
||||||
|
while ((proveedores.proveedor[proveedores.contador].CIF != "X") && (proveedores.contador < NP)) {
|
||||||
|
archivo >> claseAUX;
|
||||||
|
tIntToClase(proveedores, claseAUX);
|
||||||
|
archivo >> proveedores.proveedor[proveedores.contador].pedidos;
|
||||||
|
archivo >> proveedores.proveedor[proveedores.contador].coste;
|
||||||
|
proveedores.contador++;
|
||||||
|
archivo >> proveedores.proveedor[proveedores.contador].CIF;
|
||||||
|
}
|
||||||
|
cargado = true;
|
||||||
|
}
|
||||||
|
archivo.close();
|
||||||
|
|
||||||
|
return cargado;
|
||||||
|
}
|
||||||
|
|
||||||
|
void tIntToClase(tListaProveedores& proveedores, const int& aux) {
|
||||||
|
switch (aux){
|
||||||
|
case 0: proveedores.proveedor[proveedores.contador].clase = papeleria; break;
|
||||||
|
case 1: proveedores.proveedor[proveedores.contador].clase = alimentacion; break;
|
||||||
|
case 2: proveedores.proveedor[proveedores.contador].clase = limpieza; break;
|
||||||
|
case 3: proveedores.proveedor[proveedores.contador].clase = informatica; break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ejecutarMenu(tListaProveedores& proveedores) {
|
||||||
|
int opc = 1, coste, max, min;
|
||||||
|
string CIF;
|
||||||
|
|
||||||
|
while (opc != 0) {
|
||||||
|
opc = menu();
|
||||||
|
switch (opc){
|
||||||
|
case 0: break;
|
||||||
|
case 1:
|
||||||
|
mostrar(proveedores);
|
||||||
|
cout << endl << "Introduzca el CIF para el pedido: ";
|
||||||
|
cin >> CIF;
|
||||||
|
cout << "Introduzca el coste del pedido: ";
|
||||||
|
cin >> coste;
|
||||||
|
nuevoPedido(proveedores, CIF, coste);
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
cout << "Introduzca un minimo: ";
|
||||||
|
cin >> min;
|
||||||
|
cout << "Introduzca un maximo: ";
|
||||||
|
cin >> max;
|
||||||
|
mostrarIntervalo(proveedores, max, min);
|
||||||
|
break;
|
||||||
|
case 3: totalesXclase(proveedores); break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
system("PAUSE");
|
||||||
|
system("cls");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int menu() {
|
||||||
|
int opc = 0;
|
||||||
|
|
||||||
|
cout << setw(25) << setfill('=') << "MENU" << setw(25) << "\n" << setfill(char(0));
|
||||||
|
cout << "1.-Nuevo pedido." << endl;
|
||||||
|
cout << "2.-Proveedores con numero de pedidos en un intervalo." << endl;
|
||||||
|
cout << "3.-Gastos por clase de proveedor." << endl;
|
||||||
|
cout << "0.-SALIR." << endl;
|
||||||
|
cout << setw(50) << setfill('=') << "\n" << setfill(char(0));
|
||||||
|
|
||||||
|
do {
|
||||||
|
cout << "Introduzca una opcion: ";
|
||||||
|
cin >> opc;
|
||||||
|
} while (opc < 0 || opc > 3);
|
||||||
|
|
||||||
|
return opc;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool guardar(tListaProveedores& proveedores) {
|
||||||
|
bool guardado = false;
|
||||||
|
ofstream archivo;
|
||||||
|
|
||||||
|
archivo.open("proveedores.txt");
|
||||||
|
if (!archivo.is_open()) {
|
||||||
|
guardado = false;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
for (int i = 0; i < proveedores.contador; i++)
|
||||||
|
{
|
||||||
|
archivo << proveedores.proveedor[i].CIF << " "
|
||||||
|
<< proveedores.proveedor[i].clase << " "
|
||||||
|
<< proveedores.proveedor[i].pedidos << " "
|
||||||
|
<< proveedores.proveedor[i].coste << endl;
|
||||||
|
}
|
||||||
|
archivo << "X";
|
||||||
|
guardado = true;
|
||||||
|
}
|
||||||
|
archivo.close();
|
||||||
|
|
||||||
|
return guardado;
|
||||||
|
}
|
||||||
|
|
||||||
|
int buscarProveedor(tListaProveedores& proveedores, const string& CIF) {
|
||||||
|
int pos = proveedores.contador;
|
||||||
|
bool encontrado = false;
|
||||||
|
|
||||||
|
while ((!encontrado) && (pos > -1)) {
|
||||||
|
if (proveedores.proveedor[pos].CIF == CIF) {
|
||||||
|
encontrado = true;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
pos--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return pos;
|
||||||
|
}
|
||||||
|
|
||||||
|
void nuevoPedido(tListaProveedores& proveedores, const string& CIF, const int& coste) {
|
||||||
|
int pos = buscarProveedor(proveedores, CIF);
|
||||||
|
|
||||||
|
if (pos != -1) {
|
||||||
|
proveedores.proveedor[pos].coste += coste;
|
||||||
|
proveedores.proveedor[pos].pedidos++;
|
||||||
|
cout << "Actualizado correctamente." << endl;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
cout << "CIF no encontrado." << endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void mostrar(tListaProveedores& proveedores) {
|
||||||
|
cout << endl << setw(7) << "CIF"
|
||||||
|
<< setw(20) << "PROVEEDOR"
|
||||||
|
<< setw(13) << "NUM_PEDIDOS"
|
||||||
|
<< setw(7) << "COSTE" << endl;
|
||||||
|
cout << setw(50) << setfill('=') << "\n" << setfill(char(0));
|
||||||
|
for (int i = 0; i < proveedores.contador; i++){
|
||||||
|
cout << setw(10) << right << proveedores.proveedor[i].CIF
|
||||||
|
<< setw(10) << proveedores.proveedor[i].clase
|
||||||
|
<< setw(13) << proveedores.proveedor[i].pedidos
|
||||||
|
<< setw(12) << proveedores.proveedor[i].coste << endl;
|
||||||
|
}
|
||||||
|
cout << setw(50) << setfill('=') << "\n" << setfill(char(0));
|
||||||
|
}
|
||||||
|
|
||||||
|
void mostrarIntervalo(tListaProveedores& proveedores, const int& max, const int& min) {
|
||||||
|
cout << endl << setw(7) << "CIF"
|
||||||
|
<< setw(20) << "PROVEEDOR"
|
||||||
|
<< setw(13) << "NUM_PEDIDOS"
|
||||||
|
<< setw(7) << "COSTE" << endl;
|
||||||
|
cout << setw(50) << setfill('=') << "\n" << setfill(char(0));
|
||||||
|
for (int i = 0; i < proveedores.contador; i++) {
|
||||||
|
if ((proveedores.proveedor[i].pedidos <= max) && (proveedores.proveedor[i].pedidos >= min)) {
|
||||||
|
cout << setw(10) << right << proveedores.proveedor[i].CIF
|
||||||
|
<< setw(10) << proveedores.proveedor[i].clase
|
||||||
|
<< setw(13) << proveedores.proveedor[i].pedidos
|
||||||
|
<< setw(12) << proveedores.proveedor[i].coste << endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
cout << setw(50) << setfill('=') << "\n" << setfill(char(0));
|
||||||
|
}
|
||||||
|
|
||||||
|
void totalesXclase(tListaProveedores& proveedores) {
|
||||||
|
tListaGastos gastos;
|
||||||
|
|
||||||
|
iniciaGastos(gastos);
|
||||||
|
for (int i = 0; i < CLASES; i++){
|
||||||
|
for (int j = 0; j < NP; j++){
|
||||||
|
if (proveedores.proveedor[j].clase == gastos[i].clase) {
|
||||||
|
gastos[i].gasto += proveedores.proveedor[j].coste;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
switch (gastos[i].clase){
|
||||||
|
case 0: cout << setw(12) << right << "Papeleria"; break;
|
||||||
|
case 1: cout << setw(12) << right << "Alimentacion"; break;
|
||||||
|
case 2: cout << setw(12) << right << "Limpieza"; break;
|
||||||
|
case 3: cout << setw(12) << right << "Informatica"; break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
cout << setw(10) << right << gastos[i].gasto << endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void iniciaGastos(tListaGastos& gastos) {
|
||||||
|
gastos[0].clase = papeleria;
|
||||||
|
gastos[1].clase = alimentacion;
|
||||||
|
gastos[2].clase = limpieza;
|
||||||
|
gastos[3].clase = informatica;
|
||||||
|
for (int i = 0; i < CLASES; i++){
|
||||||
|
gastos[i].gasto = 0;
|
||||||
|
}
|
||||||
|
}
|
Binary file not shown.
@ -0,0 +1,6 @@
|
|||||||
|
A00112233 2 4 232
|
||||||
|
B95637245 2 1 112
|
||||||
|
F00148231 0 22 728
|
||||||
|
F00166230 1 3 94
|
||||||
|
A12345678 0 123 6057
|
||||||
|
X
|
@ -0,0 +1,193 @@
|
|||||||
|
//Exámen Febrero 2015 - Grupos A, B, D, I y G.
|
||||||
|
//Fernando Méndez Torrubiano
|
||||||
|
|
||||||
|
#include <iostream>
|
||||||
|
#include <string>
|
||||||
|
#include <fstream>
|
||||||
|
#include <iomanip>
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
//Constantes:
|
||||||
|
const int NUM_ASIG = 6;
|
||||||
|
const int MAX_RESERVAS = 3;
|
||||||
|
|
||||||
|
//Tipos:
|
||||||
|
typedef struct tAsignatura {
|
||||||
|
string nombre;
|
||||||
|
float creditos;
|
||||||
|
int numGrupos;
|
||||||
|
};
|
||||||
|
typedef tAsignatura tAsignaturas[NUM_ASIG];
|
||||||
|
|
||||||
|
typedef struct tReserva {
|
||||||
|
string nombre;
|
||||||
|
int grupos;
|
||||||
|
};
|
||||||
|
typedef tReserva tReservas[MAX_RESERVAS];
|
||||||
|
|
||||||
|
typedef struct tProfesor {
|
||||||
|
tAsignaturas asignatura;
|
||||||
|
tReservas reserva;
|
||||||
|
int contadorA;
|
||||||
|
int contadorR;
|
||||||
|
};
|
||||||
|
|
||||||
|
//Funciones:
|
||||||
|
void inicia(tProfesor&);
|
||||||
|
bool cargar(tProfesor&);
|
||||||
|
bool guardar(tProfesor&);
|
||||||
|
void mostrarDisponibles(tProfesor&);
|
||||||
|
void leerReservas(tProfesor&);
|
||||||
|
int buscarAsignatura(tProfesor&, const string&);
|
||||||
|
void realizaReserva(tProfesor&, const int&);
|
||||||
|
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
tProfesor profesor;
|
||||||
|
|
||||||
|
inicia(profesor);
|
||||||
|
if (cargar(profesor)) {
|
||||||
|
mostrarDisponibles(profesor);
|
||||||
|
leerReservas(profesor);
|
||||||
|
mostrarDisponibles(profesor);
|
||||||
|
if (guardar(profesor)) {
|
||||||
|
cout << "Guardado correctamente." << endl;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
cout << "Intentelo de nuevo." << endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
cout << "Fin del programa." << endl;
|
||||||
|
}
|
||||||
|
system("PAUSE");
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void inicia(tProfesor& profesor) {
|
||||||
|
profesor.contadorA = 0;
|
||||||
|
profesor.contadorR = 0;
|
||||||
|
for (int i = 0; i < NUM_ASIG; i++){
|
||||||
|
profesor.asignatura[i].nombre = "";
|
||||||
|
profesor.asignatura[i].creditos = 0;
|
||||||
|
profesor.asignatura[i].numGrupos = 0;
|
||||||
|
if (i < MAX_RESERVAS) {
|
||||||
|
profesor.reserva[i].nombre = "";
|
||||||
|
profesor.reserva[i].grupos = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool cargar(tProfesor& profesor) {
|
||||||
|
bool carga = false;
|
||||||
|
ifstream archivo;
|
||||||
|
|
||||||
|
archivo.open("asignaturas.txt");
|
||||||
|
if (!archivo.is_open()) {
|
||||||
|
cout << "Error al cargar las asignaturas." << endl;
|
||||||
|
carga = false;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
archivo >> profesor.asignatura[profesor.contadorA].nombre;
|
||||||
|
while ((profesor.asignatura[profesor.contadorA].nombre != "XXX") && (profesor.contadorA < NUM_ASIG)) {
|
||||||
|
archivo >> profesor.asignatura[profesor.contadorA].creditos;
|
||||||
|
archivo >> profesor.asignatura[profesor.contadorA].numGrupos;
|
||||||
|
profesor.contadorA++;
|
||||||
|
archivo >> profesor.asignatura[profesor.contadorA].nombre;
|
||||||
|
}
|
||||||
|
carga = true;
|
||||||
|
}
|
||||||
|
archivo.close();
|
||||||
|
|
||||||
|
return carga;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool guardar(tProfesor& profesor) {
|
||||||
|
bool guardado = false;
|
||||||
|
ofstream archivo;
|
||||||
|
|
||||||
|
archivo.open("asignaturas.txt");
|
||||||
|
if (!archivo.is_open()) {
|
||||||
|
cout << "Error al guardar las asignaturas." << endl;
|
||||||
|
guardado = false;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
for (int i = 0; i < profesor.contadorA; i++) {
|
||||||
|
archivo << profesor.asignatura[i].nombre << " ";
|
||||||
|
archivo << profesor.asignatura[i].creditos << " ";
|
||||||
|
archivo << profesor.asignatura[i].numGrupos << endl;
|
||||||
|
}
|
||||||
|
archivo << "XXX";
|
||||||
|
guardado = true;
|
||||||
|
}
|
||||||
|
archivo.close();
|
||||||
|
|
||||||
|
return guardado;
|
||||||
|
}
|
||||||
|
|
||||||
|
void mostrarDisponibles(tProfesor& profesor) {
|
||||||
|
cout << setw(3) << right << "NOMBRE"
|
||||||
|
<< setw(10) << "CREDITOS"
|
||||||
|
<< setw(20) << "GRUPOS DISPONIBLES" << endl;
|
||||||
|
cout << setw(40) << setfill('=') << "\n" << setfill(char(0));
|
||||||
|
for (int i = 0; i < profesor.contadorA; i++){
|
||||||
|
if (profesor.asignatura[i].numGrupos > 0) {
|
||||||
|
cout << setw(3) << right << profesor.asignatura[i].nombre
|
||||||
|
<< setw(10) << profesor.asignatura[i].creditos
|
||||||
|
<< setw(20) << profesor.asignatura[i].numGrupos << endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
cout << setw(40) << setfill('=') << "\n" << setfill(char(0));
|
||||||
|
}
|
||||||
|
|
||||||
|
void leerReservas(tProfesor& profesor) {
|
||||||
|
string nombre;
|
||||||
|
int existe = 0, numCreditos = 0;
|
||||||
|
|
||||||
|
while ((nombre != "XXX") && (profesor.contadorR < MAX_RESERVAS)) {
|
||||||
|
cout << "Introduzca nombre de la asignatura a reservar: ";
|
||||||
|
cin >> nombre;
|
||||||
|
existe = buscarAsignatura(profesor, nombre);
|
||||||
|
if (existe != -1) {
|
||||||
|
profesor.reserva[profesor.contadorR].nombre = nombre;
|
||||||
|
realizaReserva(profesor, existe);
|
||||||
|
numCreditos += profesor.asignatura[existe].creditos;
|
||||||
|
profesor.contadorR++;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if (nombre != "XXX") {
|
||||||
|
cout << "Asignatura no encontrada." << endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
cout << endl << "Creditos reservados: " << numCreditos << endl << endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
int buscarAsignatura(tProfesor& profesor, const string& nombre) {
|
||||||
|
int i = NUM_ASIG - 1;
|
||||||
|
bool encontrado = false;
|
||||||
|
|
||||||
|
while ((profesor.asignatura[i].nombre != nombre) && (i > -1) && (!encontrado)) {
|
||||||
|
if (profesor.asignatura[i].nombre == nombre) {
|
||||||
|
encontrado = true;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
i--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
|
||||||
|
void realizaReserva(tProfesor& profesor, const int& pos) {
|
||||||
|
int numGrupos = 0, resta = 0;
|
||||||
|
|
||||||
|
do {
|
||||||
|
cout << "Grupos a reservar (Quedan " << profesor.asignatura[pos].numGrupos << " grupos): ";
|
||||||
|
cin >> numGrupos;
|
||||||
|
resta = profesor.asignatura[pos].numGrupos - numGrupos;
|
||||||
|
} while (resta < 0);
|
||||||
|
|
||||||
|
profesor.asignatura[pos].numGrupos -= numGrupos;
|
||||||
|
}
|
Binary file not shown.
@ -0,0 +1,7 @@
|
|||||||
|
FP 6.00 8
|
||||||
|
FC 6.00 8
|
||||||
|
GE 3.00 2
|
||||||
|
FEE 3.00 2
|
||||||
|
MMI 6.50 6
|
||||||
|
MDL 6.00 7
|
||||||
|
XXX
|
@ -0,0 +1,210 @@
|
|||||||
|
//Exámen Febrero 2015 - Grupos C, E y F.
|
||||||
|
//Fernando Méndez Torrubiano
|
||||||
|
|
||||||
|
#include <iostream>
|
||||||
|
#include <string>
|
||||||
|
#include <fstream>
|
||||||
|
#include <iomanip>
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
|
||||||
|
//Constantes:
|
||||||
|
const int MAX_VIAJES = 10;
|
||||||
|
const int NUM_PREFERENCIAS = 3;
|
||||||
|
|
||||||
|
//Tipos:
|
||||||
|
typedef enum tCategoria{Mochilero, Turista, Lujo};
|
||||||
|
typedef struct tViaje {
|
||||||
|
string destino;
|
||||||
|
int duracion;
|
||||||
|
int plazas;
|
||||||
|
tCategoria categoria;
|
||||||
|
};
|
||||||
|
typedef tViaje tViajes[MAX_VIAJES];
|
||||||
|
typedef struct tListaViajes {
|
||||||
|
tViajes viaje;
|
||||||
|
int contador;
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef string tPreferencias[NUM_PREFERENCIAS];
|
||||||
|
|
||||||
|
//Funciones:
|
||||||
|
void inicializa(tListaViajes&);
|
||||||
|
bool cargarCatalogo(tListaViajes&);
|
||||||
|
void tIntToCategoria(tListaViajes&, const int&);
|
||||||
|
void mostrarViajesEnCategoria(tListaViajes&, const int&);
|
||||||
|
void convertirCat(const int&, tCategoria&);
|
||||||
|
bool guardarCatalogo(tListaViajes&);
|
||||||
|
void leerPreferencias(tPreferencias&);
|
||||||
|
int buscarDestino(tListaViajes&, tPreferencias&, const int&);
|
||||||
|
bool hacerReserva(tListaViajes&, const int&, tPreferencias&);
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
tListaViajes viajes;
|
||||||
|
tPreferencias preferencia;
|
||||||
|
int numCat;
|
||||||
|
|
||||||
|
if (cargarCatalogo(viajes)) {
|
||||||
|
cout << "Escriba una categoria (0 Mochilero, 1 Turista, 2 Lujo): ";
|
||||||
|
cin >> numCat;
|
||||||
|
mostrarViajesEnCategoria(viajes, numCat);
|
||||||
|
leerPreferencias(preferencia);
|
||||||
|
if (hacerReserva(viajes, numCat, preferencia)) {
|
||||||
|
cout << "Gracias por su reserva." << endl;
|
||||||
|
guardarCatalogo(viajes);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
cout << "Vuelva a intentarlo." << endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
cout << "FIN DEL PROGRAMA." << endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
system("PAUSE");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void inicializa(tListaViajes& viajes) {
|
||||||
|
viajes.contador = 0;
|
||||||
|
for (int i = 0; i < MAX_VIAJES; i++){
|
||||||
|
viajes.viaje[i].destino = "";
|
||||||
|
viajes.viaje[i].duracion = 0;
|
||||||
|
viajes.viaje[i].plazas = 0;
|
||||||
|
viajes.viaje[i].categoria = Mochilero;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool cargarCatalogo(tListaViajes& viajes) {
|
||||||
|
bool carga = false;
|
||||||
|
ifstream archivo;
|
||||||
|
int aux = 0;
|
||||||
|
|
||||||
|
inicializa(viajes);
|
||||||
|
archivo.open("catalogoViajes.txt");
|
||||||
|
if (!archivo.is_open()) {
|
||||||
|
cout << "Error al cargar el archivo." << endl;
|
||||||
|
carga = false;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
archivo >> viajes.viaje[viajes.contador].destino;
|
||||||
|
while ((viajes.viaje[viajes.contador].destino != "XXX") && (viajes.contador < MAX_VIAJES)) {
|
||||||
|
archivo >> viajes.viaje[viajes.contador].duracion;
|
||||||
|
archivo >> viajes.viaje[viajes.contador].plazas;
|
||||||
|
archivo >> aux;
|
||||||
|
tIntToCategoria(viajes, aux);
|
||||||
|
viajes.contador++;
|
||||||
|
archivo >> viajes.viaje[viajes.contador].destino;
|
||||||
|
}
|
||||||
|
carga = true;
|
||||||
|
}
|
||||||
|
archivo.close();
|
||||||
|
|
||||||
|
return carga;
|
||||||
|
}
|
||||||
|
|
||||||
|
void tIntToCategoria(tListaViajes& viajes, const int& aux) {
|
||||||
|
switch (aux) {
|
||||||
|
case 0: viajes.viaje[viajes.contador].categoria = Mochilero; break;
|
||||||
|
case 1: viajes.viaje[viajes.contador].categoria = Turista; break;
|
||||||
|
case 2: viajes.viaje[viajes.contador].categoria = Lujo; break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void mostrarViajesEnCategoria(tListaViajes& viajes, const int& numCategoria) {
|
||||||
|
tCategoria categoria;
|
||||||
|
|
||||||
|
convertirCat(numCategoria, categoria);
|
||||||
|
|
||||||
|
cout << setw(10) << right << "DESTINO"
|
||||||
|
<< setw(15) << "DURACION"
|
||||||
|
<< setw(15) << "PLAZAS" << endl;
|
||||||
|
cout << setw(25) << setfill('=') << categoria << setw(25) << "\n" << setfill(char(0));
|
||||||
|
for (int i = 0; i < viajes.contador; i++){
|
||||||
|
if (viajes.viaje[i].categoria == categoria) {
|
||||||
|
cout << setw(10) << right << viajes.viaje[i].destino
|
||||||
|
<< setw(15) << viajes.viaje[i].duracion
|
||||||
|
<< setw(15) << viajes.viaje[i].plazas << endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
cout << setw(50) << setfill('=') << "\n" << setfill(char(0));
|
||||||
|
}
|
||||||
|
|
||||||
|
void convertirCat(const int& numCategoria, tCategoria& categoria) {
|
||||||
|
switch (numCategoria) {
|
||||||
|
case 0: categoria = Mochilero; break;
|
||||||
|
case 1: categoria = Turista; break;
|
||||||
|
case 2: categoria = Lujo; break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool guardarCatalogo(tListaViajes& viajes) {
|
||||||
|
bool guardado = false;
|
||||||
|
ofstream archivo;
|
||||||
|
|
||||||
|
archivo.open("catalogoViajes.txt");
|
||||||
|
if (!archivo.is_open()) {
|
||||||
|
cout << "Error al guardar el archivo." << endl;
|
||||||
|
guardado = false;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
for (int i = 0; i < viajes.contador; i++){
|
||||||
|
archivo << viajes.viaje[i].destino << " "
|
||||||
|
<< viajes.viaje[i].duracion << " "
|
||||||
|
<< viajes.viaje[i].plazas << " "
|
||||||
|
<< viajes.viaje[i].categoria << endl;
|
||||||
|
}
|
||||||
|
archivo << "XXX";
|
||||||
|
guardado = true;
|
||||||
|
}
|
||||||
|
archivo.close();
|
||||||
|
|
||||||
|
return guardado;
|
||||||
|
}
|
||||||
|
|
||||||
|
void leerPreferencias(tPreferencias& preferencia) {
|
||||||
|
for (int i = 0; i < NUM_PREFERENCIAS; i++) {
|
||||||
|
cout << "Escriba sus destinos preferentes (de mayor a menor): ";
|
||||||
|
cin >> preferencia[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int buscarDestino(tListaViajes& viajes, tPreferencias& preferencias, const int& numCategoria) {
|
||||||
|
int i = 0, pos = viajes.contador - 1;
|
||||||
|
tCategoria categoria;
|
||||||
|
bool encontrado = false;
|
||||||
|
|
||||||
|
convertirCat(numCategoria, categoria);
|
||||||
|
|
||||||
|
while ((i < NUM_PREFERENCIAS) && (!encontrado)) {
|
||||||
|
pos = viajes.contador - 1;
|
||||||
|
while ((pos > -1) && (!encontrado)) {
|
||||||
|
if ((viajes.viaje[pos].destino == preferencias[i]) && (viajes.viaje[pos].categoria == categoria) && (viajes.viaje[pos].plazas > 0)) {
|
||||||
|
encontrado = true;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
pos--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
|
||||||
|
return pos;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool hacerReserva(tListaViajes& viajes, const int& numCategoria, tPreferencias& preferencias) {
|
||||||
|
bool reserva = false;
|
||||||
|
int posReserva = buscarDestino(viajes, preferencias, numCategoria);
|
||||||
|
|
||||||
|
if (posReserva != -1) {
|
||||||
|
cout << "Reservado viaje a " << viajes.viaje[posReserva].destino << endl;
|
||||||
|
viajes.viaje[posReserva].plazas--;
|
||||||
|
reserva = true;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
cout << "No hay disponibilidad para esas preferencias." << endl;
|
||||||
|
reserva = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return reserva;
|
||||||
|
}
|
Binary file not shown.
@ -0,0 +1,7 @@
|
|||||||
|
Nepal 10 2 0
|
||||||
|
Mongolia 15 0 0
|
||||||
|
Viena 3 8 2
|
||||||
|
Viena 3 2 1
|
||||||
|
Sicilia 5 1 1
|
||||||
|
Las-Vegas 4 2 0
|
||||||
|
XXX
|
@ -0,0 +1,255 @@
|
|||||||
|
//Examen Febrero 2015 - Grupos D, G y H
|
||||||
|
//Fernando Méndez Torrubiano
|
||||||
|
|
||||||
|
#include <iostream>
|
||||||
|
#include <string>
|
||||||
|
#include <fstream>
|
||||||
|
#include <iomanip>
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
|
||||||
|
//Constantes:
|
||||||
|
const int NUM_PROD = 5;
|
||||||
|
const int NUM_PED = 3;
|
||||||
|
|
||||||
|
//Tipos:
|
||||||
|
typedef struct tProducto {
|
||||||
|
string codigo;
|
||||||
|
string descripcion;
|
||||||
|
float precio;
|
||||||
|
bool oferta;
|
||||||
|
};
|
||||||
|
typedef tProducto tProductos[NUM_PROD];
|
||||||
|
typedef struct tListaProductos {
|
||||||
|
tProductos producto;
|
||||||
|
int contador;
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef struct tCesta {
|
||||||
|
string nombre;
|
||||||
|
int unidades;
|
||||||
|
float precioProducto;
|
||||||
|
};
|
||||||
|
typedef tCesta tCestas[NUM_PED];
|
||||||
|
typedef struct tPedidos{
|
||||||
|
tCestas cesta;
|
||||||
|
int contador;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
//Funciones:
|
||||||
|
void inicia(tListaProductos&, tPedidos&);
|
||||||
|
bool cargar(tListaProductos&);
|
||||||
|
void ejecutarMenu(tListaProductos&, tPedidos&);
|
||||||
|
int menu();
|
||||||
|
void muestraProductos(tListaProductos&);
|
||||||
|
string tBoolToString(tListaProductos&, const int&);
|
||||||
|
void crearCesta(tListaProductos&, tPedidos&);
|
||||||
|
bool buscarProducto(const tListaProductos&, const tPedidos&);
|
||||||
|
bool procesaCesta(tListaProductos&, tPedidos&);
|
||||||
|
float total(tListaProductos&, tPedidos&, const int&, float&);
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
tListaProductos productos;
|
||||||
|
tPedidos pedidos;
|
||||||
|
|
||||||
|
inicia(productos, pedidos);
|
||||||
|
if (cargar(productos)) {
|
||||||
|
ejecutarMenu(productos, pedidos);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void inicia(tListaProductos& productos, tPedidos& pedidos) {
|
||||||
|
productos.contador = 0;
|
||||||
|
pedidos.contador = 0;
|
||||||
|
for (int i = 0; i < NUM_PROD; i++){
|
||||||
|
productos.producto[i].codigo = "";
|
||||||
|
productos.producto[i].descripcion = "";
|
||||||
|
productos.producto[i].precio = 0;
|
||||||
|
productos.producto[i].oferta = false;
|
||||||
|
if (i < NUM_PED) {
|
||||||
|
pedidos.cesta[i].nombre = "";
|
||||||
|
pedidos.cesta[i].unidades = 0;
|
||||||
|
pedidos.cesta[i].precioProducto = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool cargar(tListaProductos& productos) {
|
||||||
|
bool carga = false;
|
||||||
|
ifstream archivo;
|
||||||
|
|
||||||
|
archivo.open("productos.txt");
|
||||||
|
if (!archivo.is_open()) {
|
||||||
|
cout << "Error al cargar la lista de productos." << endl;
|
||||||
|
carga = false;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
archivo >> productos.producto[productos.contador].codigo;
|
||||||
|
while ((productos.producto[productos.contador].codigo != "XXX") && (productos.contador < NUM_PROD)) {
|
||||||
|
archivo >> productos.producto[productos.contador].precio;
|
||||||
|
archivo >> productos.producto[productos.contador].oferta;
|
||||||
|
getline(archivo, productos.producto[productos.contador].descripcion);
|
||||||
|
productos.contador++;
|
||||||
|
archivo >> productos.producto[productos.contador].codigo;
|
||||||
|
}
|
||||||
|
carga = true;
|
||||||
|
}
|
||||||
|
archivo.close();
|
||||||
|
|
||||||
|
return carga;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ejecutarMenu(tListaProductos& productos, tPedidos& pedidos) {
|
||||||
|
int opc = 1;
|
||||||
|
|
||||||
|
while (opc != 0) {
|
||||||
|
muestraProductos(productos);
|
||||||
|
opc = menu();
|
||||||
|
switch (opc){
|
||||||
|
case 0: break;
|
||||||
|
case 1: crearCesta(productos, pedidos); break;
|
||||||
|
case 2: procesaCesta(productos, pedidos); break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
system("cls");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int menu() {
|
||||||
|
int opc = 0;
|
||||||
|
|
||||||
|
cout << endl << setw(40) << setfill('=') << "\n" << setw(char(0));
|
||||||
|
cout << "1.-Añadir productos a la cesta." << endl;
|
||||||
|
cout << "2.-Confirmar pedido." << endl;
|
||||||
|
cout << "0.-SALIR." << endl;
|
||||||
|
cout << setw(40) << setfill('=') << "\n" << setw(char(0));
|
||||||
|
|
||||||
|
do {
|
||||||
|
cout << "Introduzca una opcion: ";
|
||||||
|
cin >> opc;
|
||||||
|
} while (opc < 0 || opc > 2);
|
||||||
|
|
||||||
|
return opc;
|
||||||
|
}
|
||||||
|
void muestraProductos(tListaProductos& productos) {
|
||||||
|
cout << setw(5) << right << "CODIGO"
|
||||||
|
<< setw(25) << "DESCRIPCION"
|
||||||
|
<< setw(15) << "PRECIO"
|
||||||
|
<< setw(15) << "OFERTA" << endl;
|
||||||
|
cout << setw(70) << setfill('=') << "\n" << setfill(char(0));
|
||||||
|
for (int i = 0; i < productos.contador; i++){
|
||||||
|
cout << setw(5) << right << productos.producto[i].codigo
|
||||||
|
<< setw(25) << productos.producto[i].descripcion
|
||||||
|
<< setw(15) << productos.producto[i].precio
|
||||||
|
<< setw(15) << tBoolToString(productos, i) << endl;
|
||||||
|
}
|
||||||
|
cout << setw(70) << setfill('=') << "\n" << setfill(char(0));
|
||||||
|
}
|
||||||
|
|
||||||
|
string tBoolToString(tListaProductos& productos, const int& pos) {
|
||||||
|
string oferta;
|
||||||
|
switch (productos.producto[pos].oferta){
|
||||||
|
case false: oferta = "NO"; break;
|
||||||
|
case true: oferta = "SI"; break;
|
||||||
|
}
|
||||||
|
return oferta;
|
||||||
|
}
|
||||||
|
|
||||||
|
void crearCesta(tListaProductos& productos, tPedidos& pedidos) {
|
||||||
|
int i = 0;
|
||||||
|
|
||||||
|
while ((pedidos.contador < NUM_PED) && (pedidos.cesta[pedidos.contador].nombre != "XXX")) {
|
||||||
|
cout << "Introduzca un codigo de producto: ";
|
||||||
|
cin >> pedidos.cesta[pedidos.contador].nombre;
|
||||||
|
while (!buscarProducto(productos, pedidos)) {
|
||||||
|
cout << "Producto no encontrado. Introduzca otro codigo: ";
|
||||||
|
cin >> pedidos.cesta[pedidos.contador].nombre;
|
||||||
|
}
|
||||||
|
if (pedidos.cesta[pedidos.contador].nombre != "XXX") {
|
||||||
|
cout << "Introduzca un cantidad de productos: ";
|
||||||
|
cin >> pedidos.cesta[pedidos.contador].unidades;
|
||||||
|
pedidos.contador++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
cout << "Cesta llena." << endl;
|
||||||
|
system("PAUSE");
|
||||||
|
}
|
||||||
|
|
||||||
|
bool buscarProducto(const tListaProductos& productos, const tPedidos& pedidos) {
|
||||||
|
bool encontrado = false;
|
||||||
|
int i = 0;
|
||||||
|
|
||||||
|
while ((!encontrado) && (i < productos.contador)) {
|
||||||
|
if ((pedidos.cesta[pedidos.contador].nombre == productos.producto[i].codigo) || (pedidos.cesta[pedidos.contador].nombre == "XXX")) {
|
||||||
|
encontrado = true;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return encontrado;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool procesaCesta(tListaProductos& productos, tPedidos& pedidos) {
|
||||||
|
bool procesado = false;
|
||||||
|
ofstream archivo;
|
||||||
|
float totalPrecio = 0;
|
||||||
|
|
||||||
|
archivo.open("ticket.txt");
|
||||||
|
if (!archivo.is_open()) {
|
||||||
|
cout << "Error al procesar el pedido." << endl;
|
||||||
|
procesado = false;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
for (int i = 0; i < pedidos.contador; i++){
|
||||||
|
archivo << pedidos.cesta[i].nombre << " x "
|
||||||
|
<< pedidos.cesta[i].unidades << " = ";
|
||||||
|
totalPrecio = total(productos, pedidos, i, totalPrecio);
|
||||||
|
archivo << pedidos.cesta[i].precioProducto << endl;
|
||||||
|
}
|
||||||
|
archivo << "Total compra: " << totalPrecio << endl;
|
||||||
|
procesado = true;
|
||||||
|
}
|
||||||
|
archivo.close();
|
||||||
|
|
||||||
|
if(procesado == true){
|
||||||
|
cout << "Precio total: " << totalPrecio << endl;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
cout << "Intentelo de nuevo." << endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
system("PAUSE");
|
||||||
|
return procesado;
|
||||||
|
}
|
||||||
|
|
||||||
|
float total(tListaProductos& productos, tPedidos& pedidos, const int& pos, float& total) {
|
||||||
|
int j = 0;
|
||||||
|
bool encontrado = false;
|
||||||
|
float descuento = 0;
|
||||||
|
|
||||||
|
while ((!encontrado) && (j < productos.contador)) {
|
||||||
|
if (pedidos.cesta[pos].nombre == productos.producto[j].codigo) {
|
||||||
|
if (productos.producto[j].oferta) {
|
||||||
|
descuento = (productos.producto[j].precio * 0.15);
|
||||||
|
total += (productos.producto[j].precio - descuento);
|
||||||
|
pedidos.cesta[pos].precioProducto = (productos.producto[j].precio - descuento);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
total += productos.producto[j].precio;
|
||||||
|
pedidos.cesta[pos].precioProducto = productos.producto[j].precio;
|
||||||
|
}
|
||||||
|
encontrado = true;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
j++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return total;
|
||||||
|
}
|
Binary file not shown.
@ -0,0 +1,5 @@
|
|||||||
|
L0001 1.25 0 Leche
|
||||||
|
PC010 3.15 0 Pasta de dientes
|
||||||
|
H0025 1.50 0 Huevos
|
||||||
|
Y8912 1.50 1 Pack de 6 yogures
|
||||||
|
XXX
|
@ -0,0 +1,279 @@
|
|||||||
|
//Exámen Febro de 2016.
|
||||||
|
//Grupos F y G.
|
||||||
|
//Fernando Méndez Torubiano
|
||||||
|
|
||||||
|
#include <iostream>
|
||||||
|
#include <string>
|
||||||
|
#include <fstream>
|
||||||
|
#include <iomanip>
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
//Constantes:
|
||||||
|
const int NUM_EQUIPOS = 25;
|
||||||
|
|
||||||
|
//Tipos:
|
||||||
|
typedef enum tCategoria{principiante, intermedio, avanzado, experto};
|
||||||
|
typedef struct tEquipo {
|
||||||
|
string nombre;
|
||||||
|
tCategoria liga;
|
||||||
|
int partidasJugadas;
|
||||||
|
int partidasGanadas;
|
||||||
|
bool disponible;
|
||||||
|
|
||||||
|
};
|
||||||
|
typedef tEquipo tEquipos[NUM_EQUIPOS];
|
||||||
|
typedef struct tListaEquipos {
|
||||||
|
tEquipos equipo;
|
||||||
|
int contador;
|
||||||
|
};
|
||||||
|
|
||||||
|
//Funciones:
|
||||||
|
void inicializa(tListaEquipos&);
|
||||||
|
bool cargarDatos(tListaEquipos&);
|
||||||
|
void guardarDatos(tListaEquipos&);
|
||||||
|
void tInttoLiga(tListaEquipos&, const int);
|
||||||
|
int menu();
|
||||||
|
void ejecutarMenu(tListaEquipos&);
|
||||||
|
void jugarPartida(tListaEquipos&);
|
||||||
|
bool buscarEquipos(tListaEquipos&, const string, int&);
|
||||||
|
bool buscarContrarios(tListaEquipos&, const int, string&);
|
||||||
|
void apuntarResultado(tListaEquipos&);
|
||||||
|
void actualizarGanador(tListaEquipos&, const int&);
|
||||||
|
void actualizarPerdedor(tListaEquipos&, const int&);
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
tListaEquipos equipos;
|
||||||
|
|
||||||
|
if (cargarDatos(equipos)) {
|
||||||
|
ejecutarMenu(equipos);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
cout << "Fin del programa." << endl;
|
||||||
|
system("PAUSE");
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void inicializa(tListaEquipos& equipos) {
|
||||||
|
equipos.contador = 0;
|
||||||
|
for (int i = 0; i < NUM_EQUIPOS; i++){
|
||||||
|
equipos.equipo[i].nombre = "";
|
||||||
|
equipos.equipo[i].liga = principiante;
|
||||||
|
equipos.equipo[i].partidasJugadas = 0;
|
||||||
|
equipos.equipo[i].partidasGanadas = 0;
|
||||||
|
equipos.equipo[i].disponible = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool cargarDatos(tListaEquipos& equipos) {
|
||||||
|
bool carga = false;
|
||||||
|
ifstream archivo;
|
||||||
|
int AUXliga = 0;
|
||||||
|
|
||||||
|
inicializa(equipos);
|
||||||
|
archivo.open("equipos.txt");
|
||||||
|
if (!archivo.is_open()) {
|
||||||
|
cout << "Archivo no encontrado." << endl;
|
||||||
|
carga = false;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
archivo >> equipos.equipo[equipos.contador].nombre;
|
||||||
|
while ((equipos.equipo[equipos.contador].nombre != "XXX") && (equipos.contador < NUM_EQUIPOS)) {
|
||||||
|
archivo >> AUXliga;
|
||||||
|
tInttoLiga(equipos, AUXliga);
|
||||||
|
archivo >> equipos.equipo[equipos.contador].partidasJugadas;
|
||||||
|
archivo >> equipos.equipo[equipos.contador].partidasGanadas;
|
||||||
|
archivo >> equipos.equipo[equipos.contador].disponible;
|
||||||
|
equipos.contador++;
|
||||||
|
archivo >> equipos.equipo[equipos.contador].nombre;
|
||||||
|
}
|
||||||
|
carga = true;
|
||||||
|
}
|
||||||
|
archivo.close();
|
||||||
|
|
||||||
|
return carga;
|
||||||
|
}
|
||||||
|
|
||||||
|
void tInttoLiga(tListaEquipos& equipos, const int AUXliga) {
|
||||||
|
switch (AUXliga){
|
||||||
|
case 0: equipos.equipo[equipos.contador].liga = principiante; break;
|
||||||
|
case 1: equipos.equipo[equipos.contador].liga = intermedio; break;
|
||||||
|
case 2: equipos.equipo[equipos.contador].liga = avanzado; break;
|
||||||
|
case 3: equipos.equipo[equipos.contador].liga = experto; break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int menu() {
|
||||||
|
int opc = 0;
|
||||||
|
|
||||||
|
cout << setw(25) << setfill('=') << "\n";
|
||||||
|
cout << "1.- Jugar Partida." << endl;
|
||||||
|
cout << "2.- Apuntar resultado." << endl;
|
||||||
|
cout << "0.- Salir." << endl;
|
||||||
|
cout << setw(25) << setfill('=') << "\n" << setw(0) << setfill(char(0));
|
||||||
|
|
||||||
|
do {
|
||||||
|
cout << "Introduzca una opcion: ";
|
||||||
|
cin >> opc;
|
||||||
|
} while (opc < 0 || opc > 2);
|
||||||
|
|
||||||
|
return opc;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ejecutarMenu(tListaEquipos& equipos) {
|
||||||
|
int opc = 1;
|
||||||
|
|
||||||
|
while (opc != 0) {
|
||||||
|
opc = menu();
|
||||||
|
switch (opc){
|
||||||
|
case 1: jugarPartida(equipos); break;
|
||||||
|
case 2: apuntarResultado(equipos); break;
|
||||||
|
case 0: guardarDatos(equipos); break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
system("cls");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void jugarPartida(tListaEquipos& equipos) {
|
||||||
|
string nomEquipo, nomContrario;
|
||||||
|
int pos = 0;
|
||||||
|
|
||||||
|
cout << "Introduzca el nombre de su equipo: ";
|
||||||
|
cin >> nomEquipo;
|
||||||
|
if (buscarEquipos(equipos, nomEquipo, pos)) {
|
||||||
|
if (buscarContrarios(equipos, pos, nomContrario)) {
|
||||||
|
cout << "Rival encontrado: " << nomContrario << endl;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
equipos.equipo[pos].disponible = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
cout << "Equipo no encontrado." << endl;
|
||||||
|
}
|
||||||
|
system("PAUSE");
|
||||||
|
}
|
||||||
|
|
||||||
|
bool buscarEquipos(tListaEquipos& equipos, const string nomEquipo, int& posicion) {
|
||||||
|
bool encontrado = false;
|
||||||
|
|
||||||
|
while ((!encontrado) && (posicion < equipos.contador)) {
|
||||||
|
if (equipos.equipo[posicion].nombre == nomEquipo) {
|
||||||
|
encontrado = true;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
posicion++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return encontrado;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool buscarContrarios(tListaEquipos& equipos, const int pos, string& nomContrario) {
|
||||||
|
bool encontrado = false;
|
||||||
|
int i = 0;
|
||||||
|
int numPartidasJugadas = 25;
|
||||||
|
|
||||||
|
for (int i = 0; i < equipos.contador; i++) {
|
||||||
|
if ((equipos.equipo[i].liga == equipos.equipo[pos].liga) && (i != pos) && (numPartidasJugadas >= equipos.equipo[i].partidasJugadas)) {
|
||||||
|
numPartidasJugadas = equipos.equipo[i].partidasJugadas;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
while ((!encontrado) && (i < equipos.contador)) {
|
||||||
|
if ((equipos.equipo[i].liga == equipos.equipo[pos].liga) && (i != pos) && (numPartidasJugadas == equipos.equipo[i].partidasJugadas)) {
|
||||||
|
nomContrario = equipos.equipo[i].nombre;
|
||||||
|
encontrado = true;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return encontrado;
|
||||||
|
}
|
||||||
|
|
||||||
|
void apuntarResultado(tListaEquipos& equipos) {
|
||||||
|
string nomGanador, nomPerdedor;
|
||||||
|
int posGanador = 0, posPerdedor = 0;
|
||||||
|
|
||||||
|
do {
|
||||||
|
cout << "Introduzca el nombre del equipo GANADOR: ";
|
||||||
|
cin >> nomGanador;
|
||||||
|
} while (!buscarEquipos(equipos, nomGanador, posGanador));
|
||||||
|
actualizarGanador(equipos, posGanador);
|
||||||
|
|
||||||
|
do {
|
||||||
|
cout << "Introduzca el nombre del equipo PERDEDOR: ";
|
||||||
|
cin >> nomPerdedor;
|
||||||
|
} while (!buscarEquipos(equipos, nomPerdedor, posPerdedor));
|
||||||
|
actualizarPerdedor(equipos, posPerdedor);
|
||||||
|
|
||||||
|
cout << endl << "Resultados actualizados correctamente." << endl;
|
||||||
|
system("PAUSE");
|
||||||
|
}
|
||||||
|
|
||||||
|
void actualizarGanador(tListaEquipos& equipos, const int& pos) {
|
||||||
|
int partidasPerdidas = 0, diferencia = 0;
|
||||||
|
|
||||||
|
equipos.equipo[pos].partidasJugadas++;
|
||||||
|
equipos.equipo[pos].partidasGanadas++;
|
||||||
|
|
||||||
|
partidasPerdidas = equipos.equipo[pos].partidasJugadas - equipos.equipo[pos].partidasGanadas;
|
||||||
|
diferencia = equipos.equipo[pos].partidasGanadas - partidasPerdidas;
|
||||||
|
if (diferencia > 25) {
|
||||||
|
switch (equipos.equipo[pos].liga) {
|
||||||
|
case principiante: equipos.equipo[pos].liga = intermedio; break;
|
||||||
|
case intermedio: equipos.equipo[pos].liga = avanzado; break;
|
||||||
|
case avanzado: equipos.equipo[pos].liga = experto; break;
|
||||||
|
case experto: equipos.equipo[pos].liga = experto; break;
|
||||||
|
}
|
||||||
|
equipos.equipo[pos].partidasJugadas = 0;
|
||||||
|
equipos.equipo[pos].partidasGanadas = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
equipos.equipo[pos].disponible = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void actualizarPerdedor(tListaEquipos& equipos, const int& pos) {
|
||||||
|
int partidasPerdidas = 0;
|
||||||
|
|
||||||
|
equipos.equipo[pos].partidasJugadas++;
|
||||||
|
|
||||||
|
partidasPerdidas = equipos.equipo[pos].partidasJugadas - equipos.equipo[pos].partidasGanadas;
|
||||||
|
if (partidasPerdidas > 20) {
|
||||||
|
switch (equipos.equipo[pos].liga) {
|
||||||
|
case principiante: equipos.equipo[pos].liga = principiante; break;
|
||||||
|
case intermedio: equipos.equipo[pos].liga = principiante; break;
|
||||||
|
case avanzado: equipos.equipo[pos].liga = intermedio; break;
|
||||||
|
case experto: equipos.equipo[pos].liga = avanzado; break;
|
||||||
|
}
|
||||||
|
equipos.equipo[pos].partidasJugadas = 0;
|
||||||
|
equipos.equipo[pos].partidasGanadas = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
equipos.equipo[pos].disponible = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void guardarDatos(tListaEquipos& equipos) {
|
||||||
|
ofstream archivo;
|
||||||
|
|
||||||
|
archivo.open("equipos.txt");
|
||||||
|
if (!archivo.is_open()) {
|
||||||
|
cout << "Error al guardar el archivo." << endl;
|
||||||
|
system("PAUSE");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
for (int i = 0; i < equipos.contador; i++){
|
||||||
|
archivo << equipos.equipo[i].nombre << endl;
|
||||||
|
archivo << equipos.equipo[i].liga << " ";
|
||||||
|
archivo << equipos.equipo[i].partidasJugadas << " ";
|
||||||
|
archivo << equipos.equipo[i].partidasGanadas << " ";
|
||||||
|
archivo << equipos.equipo[i].disponible << endl;
|
||||||
|
}
|
||||||
|
archivo << "XXX";
|
||||||
|
}
|
||||||
|
archivo.close();
|
||||||
|
}
|
Binary file not shown.
@ -0,0 +1,21 @@
|
|||||||
|
EquipoA
|
||||||
|
3 9 8 0
|
||||||
|
EquipoB
|
||||||
|
3 4 1 0
|
||||||
|
EquipoC
|
||||||
|
0 5 4 0
|
||||||
|
EquipoD
|
||||||
|
2 3 2 1
|
||||||
|
EquipoE
|
||||||
|
1 2 1 0
|
||||||
|
EquipoF
|
||||||
|
2 5 3 1
|
||||||
|
EquipoG
|
||||||
|
2 6 1 1
|
||||||
|
EquipoH
|
||||||
|
2 5 2 1
|
||||||
|
EquipoI
|
||||||
|
1 4 1 0
|
||||||
|
EquipoJ
|
||||||
|
0 3 0 1
|
||||||
|
XXX
|
@ -0,0 +1,224 @@
|
|||||||
|
//Exá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
|
@ -0,0 +1,151 @@
|
|||||||
|
// Eva Verdú Rodríguez 51220965B
|
||||||
|
// LAB: 10
|
||||||
|
// PTO: 12
|
||||||
|
|
||||||
|
#include <iostream>
|
||||||
|
#include <string>
|
||||||
|
#include <fstream>
|
||||||
|
#include <iomanip>
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
const int MAX_APUNTES = 500;
|
||||||
|
|
||||||
|
typedef struct tFecha {
|
||||||
|
int dia;
|
||||||
|
int mes;
|
||||||
|
int año;
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef struct tApunte {
|
||||||
|
tFecha fecha;
|
||||||
|
float impor;
|
||||||
|
string concep;
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef struct tCuenta {
|
||||||
|
tApunte apunte [MAX_APUNTES];
|
||||||
|
int cont;
|
||||||
|
};
|
||||||
|
|
||||||
|
int menu();
|
||||||
|
void cargar(tCuenta & cuenta, string fichero);
|
||||||
|
void Nomina(const tCuenta cuenta);
|
||||||
|
void GastoLuzAño(const tCuenta cuenta, int año);
|
||||||
|
void mostrar(const tCuenta cuenta);
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
int opc, año;
|
||||||
|
tCuenta cuenta;
|
||||||
|
cuenta.cont = 0;
|
||||||
|
string fichero = "apuntes.txt";
|
||||||
|
opc = menu();
|
||||||
|
do{
|
||||||
|
switch (opc) {
|
||||||
|
case 1:
|
||||||
|
cargar(cuenta, fichero);
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
Nomina(cuenta);
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
cout << "Introduzca año para calcular el gasto medio: ";
|
||||||
|
cin >> año;
|
||||||
|
GastoLuzAño(cuenta, año);
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
mostrar(cuenta);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
opc = menu();
|
||||||
|
} while (opc != 0);
|
||||||
|
|
||||||
|
system("pause");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int menu() {
|
||||||
|
int opc;
|
||||||
|
do {
|
||||||
|
cout << "Elige una opción: " << endl;
|
||||||
|
cout << "1 Cargar cuenta de fichero" << endl;
|
||||||
|
cout << "2 Importe de la primera nómina" << endl;
|
||||||
|
cout << "3 Gasto medio de luz en un año" << endl;
|
||||||
|
cout << "4 Mostrar por pantalla" << endl;
|
||||||
|
cout << "0 Salir" << endl;
|
||||||
|
cin >> opc;
|
||||||
|
} while (opc < 0 || opc > 4);
|
||||||
|
|
||||||
|
return opc;
|
||||||
|
}
|
||||||
|
|
||||||
|
void cargar(tCuenta & cuenta, string fichero){
|
||||||
|
ifstream archivo;
|
||||||
|
archivo.open(fichero);
|
||||||
|
int aux;
|
||||||
|
if (archivo.is_open()) {
|
||||||
|
archivo >> aux;
|
||||||
|
while (aux != -1 && cuenta.cont != MAX_APUNTES) {
|
||||||
|
cuenta.apunte[cuenta.cont].fecha.dia = aux;
|
||||||
|
archivo >> cuenta.apunte[cuenta.cont].fecha.mes;
|
||||||
|
archivo >> cuenta.apunte[cuenta.cont].fecha.año;
|
||||||
|
archivo >> cuenta.apunte[cuenta.cont].impor;
|
||||||
|
archivo >> cuenta.apunte[cuenta.cont].concep;
|
||||||
|
archivo >> aux;
|
||||||
|
cuenta.cont++;
|
||||||
|
}
|
||||||
|
archivo.close();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
cout << "Archivo no encontrado" << endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Nomina(const tCuenta cuenta) {
|
||||||
|
float nomina = 0;
|
||||||
|
bool found = false;
|
||||||
|
int i = 0;
|
||||||
|
while (i < cuenta.cont && !found) {
|
||||||
|
if (cuenta.apunte[i].concep == "Salario") {
|
||||||
|
nomina = cuenta.apunte[i].impor;
|
||||||
|
found = true;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (nomina != 0) {
|
||||||
|
cout << "El importe de la primera nomina es: " << fixed << setprecision(2) << nomina << " euros." << endl;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
cout << "No hay salarios" << endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void GastoLuzAño(const tCuenta cuenta, int año) {
|
||||||
|
float numLuz = 0;
|
||||||
|
float sum = 0;
|
||||||
|
float media = 0;
|
||||||
|
for (int i = 0; i < cuenta.cont; i++) {
|
||||||
|
if (cuenta.apunte[i].fecha.año == año && cuenta.apunte[i].concep == "Luz") {
|
||||||
|
sum += cuenta.apunte[i].impor;
|
||||||
|
numLuz++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
media = sum / numLuz;
|
||||||
|
media = media * -1;
|
||||||
|
cout << " Gasto medio del año " << año << " es: " << media << endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
void mostrar(const tCuenta cuenta) {
|
||||||
|
for (int i = 0; i < cuenta.cont; i++){
|
||||||
|
|
||||||
|
cout << setfill('0') << setw(2) << internal << cuenta.apunte[i].fecha.dia <<" "
|
||||||
|
<< setw(2) << cuenta.apunte[i].fecha.mes << " "
|
||||||
|
<< setfill(' ') << setw(5) << cuenta.apunte[i].fecha.año
|
||||||
|
<< right << fixed << setprecision(2) << setw(10) << cuenta.apunte[i].impor << " "
|
||||||
|
<< setw(10) << left << cuenta.apunte[i].concep << " " << endl;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,185 @@
|
|||||||
|
//Examen Febrero 2017 - Grupos: A, E, D y G.
|
||||||
|
//Fernando Méndez Torrubiano
|
||||||
|
|
||||||
|
#include <iostream>
|
||||||
|
#include <string>
|
||||||
|
#include <fstream>
|
||||||
|
#include <iomanip>
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
|
||||||
|
//Constantes:
|
||||||
|
const int MAX_APUNTES = 500;
|
||||||
|
|
||||||
|
|
||||||
|
//Tipos:
|
||||||
|
typedef struct {
|
||||||
|
int dia;
|
||||||
|
int mes;
|
||||||
|
int anio;
|
||||||
|
}tFecha;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
tFecha fecha;
|
||||||
|
float importe;
|
||||||
|
string concepto;
|
||||||
|
}tApunte;
|
||||||
|
|
||||||
|
typedef tApunte tApuntes[MAX_APUNTES];
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
tApuntes apunte;
|
||||||
|
int contador;
|
||||||
|
}tCuenta;
|
||||||
|
|
||||||
|
|
||||||
|
//Funciones:
|
||||||
|
void inicializa(tCuenta&);
|
||||||
|
bool cargar(tCuenta&);
|
||||||
|
int menu();
|
||||||
|
void ejecutarMenu(tCuenta&);
|
||||||
|
float nomina(tCuenta&);
|
||||||
|
float gastoLuz(tCuenta&, const int&);
|
||||||
|
void mostrar(tCuenta&);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
tCuenta cuentas;
|
||||||
|
|
||||||
|
ejecutarMenu(cuentas);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void inicializa(tCuenta& cuentas) {
|
||||||
|
cuentas.contador = 0;
|
||||||
|
for (int i = 0; i < MAX_APUNTES; i++) {
|
||||||
|
cuentas.apunte[i].fecha.dia = 0;
|
||||||
|
cuentas.apunte[i].fecha.mes = 0;
|
||||||
|
cuentas.apunte[i].fecha.anio = 0;
|
||||||
|
cuentas.apunte[i].importe = 0;
|
||||||
|
cuentas.apunte[i].concepto = "";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool cargar(tCuenta& cuentas) {
|
||||||
|
bool carga = false;
|
||||||
|
string nombreFichero;
|
||||||
|
ifstream archivo;
|
||||||
|
|
||||||
|
inicializa(cuentas);
|
||||||
|
|
||||||
|
cout << "Introduzca nombre del archivo: ";
|
||||||
|
cin >> nombreFichero;
|
||||||
|
nombreFichero += ".txt";
|
||||||
|
archivo.open(nombreFichero);
|
||||||
|
if (!archivo.is_open()) {
|
||||||
|
cout << "Error al cargar el archivo." << endl;
|
||||||
|
carga = false;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
archivo >> cuentas.apunte[cuentas.contador].fecha.dia;
|
||||||
|
while ((cuentas.apunte[cuentas.contador].fecha.dia != -1) && (cuentas.contador < MAX_APUNTES)) {
|
||||||
|
archivo >> cuentas.apunte[cuentas.contador].fecha.mes;
|
||||||
|
archivo >> cuentas.apunte[cuentas.contador].fecha.anio;
|
||||||
|
archivo >> cuentas.apunte[cuentas.contador].importe;
|
||||||
|
archivo >> cuentas.apunte[cuentas.contador].concepto;
|
||||||
|
cuentas.contador++;
|
||||||
|
archivo >> cuentas.apunte[cuentas.contador].fecha.dia;
|
||||||
|
}
|
||||||
|
carga = true;
|
||||||
|
}
|
||||||
|
archivo.close();
|
||||||
|
|
||||||
|
return carga;
|
||||||
|
}
|
||||||
|
|
||||||
|
int menu() {
|
||||||
|
int opc = 0;
|
||||||
|
|
||||||
|
cout << setw(35) << setfill('=') << "\n" << setw(0) << setfill(char(0));
|
||||||
|
cout << "1.-Cargar cuenta de fichero." << endl;
|
||||||
|
cout << "2.-Importe de la primera nomina." << endl;
|
||||||
|
cout << "3.-Gasto medio de la luz en un anio." << endl;
|
||||||
|
cout << "4.-Mostrar por pantalla." << endl;
|
||||||
|
cout << "0.-Salir." << endl;
|
||||||
|
cout << setw(35) << setfill('=') << "\n" << setw(0) << setfill(char(0));
|
||||||
|
|
||||||
|
do {
|
||||||
|
cout << "Introduzca una opcion: ";
|
||||||
|
cin >> opc;
|
||||||
|
} while ((opc < 0) || (opc > 4));
|
||||||
|
|
||||||
|
return opc;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ejecutarMenu(tCuenta& cuentas) {
|
||||||
|
int opc = 1;
|
||||||
|
int anio = 0;
|
||||||
|
|
||||||
|
while (opc != 0) {
|
||||||
|
opc = menu();
|
||||||
|
switch (opc) {
|
||||||
|
case 1:
|
||||||
|
if (cargar(cuentas)) {
|
||||||
|
cout << "Cargado correctamente." << endl;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
cout << "Vuelva a intentarlo." << endl;
|
||||||
|
} break;
|
||||||
|
case 2: cout << "Primera nomina: " << nomina(cuentas) << endl; break;
|
||||||
|
case 3: cout << "Introduzca un anio: ";
|
||||||
|
cin >> anio;
|
||||||
|
cout << "Gasto en " << anio << ": " << gastoLuz(cuentas, anio) << endl; break;
|
||||||
|
case 4: mostrar(cuentas); break;
|
||||||
|
case 0: break;
|
||||||
|
}
|
||||||
|
system("PAUSE");
|
||||||
|
system("cls");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
float nomina(tCuenta& cuentas) {
|
||||||
|
bool encontrado = false;
|
||||||
|
int i = 0;
|
||||||
|
|
||||||
|
while ((!encontrado) && (i < cuentas.contador)) {
|
||||||
|
if (cuentas.apunte[i].concepto == "Salario") {
|
||||||
|
encontrado = true;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return cuentas.apunte[i].importe;
|
||||||
|
}
|
||||||
|
|
||||||
|
float gastoLuz(tCuenta& cuentas, const int& anio) {
|
||||||
|
int i = 0;
|
||||||
|
float gasto = 0;
|
||||||
|
float importePositivo = 0;
|
||||||
|
|
||||||
|
while (i < cuentas.contador) {
|
||||||
|
if ((cuentas.apunte[i].concepto == "Luz") && (cuentas.apunte[i].fecha.anio == anio)) {
|
||||||
|
importePositivo = -1 * cuentas.apunte[i].importe;
|
||||||
|
gasto += importePositivo;
|
||||||
|
}
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
|
||||||
|
return gasto;
|
||||||
|
}
|
||||||
|
|
||||||
|
void mostrar(tCuenta& cuentas) {
|
||||||
|
cout << "FECHA" << " " << "IMPORTE" << " " << right << "CONCEPTO" << endl;
|
||||||
|
cout << setw(35) << setfill('-') << "\n" << setw(0) << setfill(char(0));
|
||||||
|
for (int i = 0; i < cuentas.contador; i++) {
|
||||||
|
cout << cuentas.apunte[i].fecha.dia << "/"
|
||||||
|
<< cuentas.apunte[i].fecha.mes << "/"
|
||||||
|
<< cuentas.apunte[i].fecha.anio << " " << left
|
||||||
|
<< cuentas.apunte[i].importe << " " << right
|
||||||
|
<< cuentas.apunte[i].concepto << endl;
|
||||||
|
}
|
||||||
|
cout << setw(35) << setfill('-') << "\n" << setw(0) << setfill(char(0));
|
||||||
|
}
|
@ -0,0 +1,185 @@
|
|||||||
|
//Examen Febrero 2017 - Grupos A, E, D y G.
|
||||||
|
//Fernando Méndez Torrubiano
|
||||||
|
|
||||||
|
#include <iostream>
|
||||||
|
#include <string>
|
||||||
|
#include <fstream>
|
||||||
|
#include <iomanip>
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
//Constantes:
|
||||||
|
const int MAX_APUNTES = 500;
|
||||||
|
|
||||||
|
//Tipos:
|
||||||
|
typedef struct tFecha {
|
||||||
|
int dia, mes, anio;
|
||||||
|
};
|
||||||
|
typedef struct tApunte {
|
||||||
|
tFecha fecha;
|
||||||
|
float importe;
|
||||||
|
string concepto;
|
||||||
|
};
|
||||||
|
typedef tApunte tApuntes[MAX_APUNTES];
|
||||||
|
typedef struct tCuenta {
|
||||||
|
tApuntes apunte;
|
||||||
|
int contador;
|
||||||
|
};
|
||||||
|
|
||||||
|
//Funciones:
|
||||||
|
void inicializa(tCuenta&);
|
||||||
|
bool cargar(tCuenta&);
|
||||||
|
float nomina(tCuenta&);
|
||||||
|
float gastoMedio(tCuenta&, const int&);
|
||||||
|
void mostrar(tCuenta&);
|
||||||
|
void ejecutarMenu(tCuenta&);
|
||||||
|
int menu();
|
||||||
|
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
tCuenta cuenta;
|
||||||
|
|
||||||
|
ejecutarMenu(cuenta);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void inicializa(tCuenta& cuenta) {
|
||||||
|
cuenta.contador = 0;
|
||||||
|
for (int i = 0; i < MAX_APUNTES; i++){
|
||||||
|
cuenta.apunte[i].fecha.dia = 0;
|
||||||
|
cuenta.apunte[i].fecha.mes = 0;
|
||||||
|
cuenta.apunte[i].fecha.anio = 0;
|
||||||
|
cuenta.apunte[i].importe = 0;
|
||||||
|
cuenta.apunte[i].concepto = "";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool cargar(tCuenta& cuenta) {
|
||||||
|
bool carga = false;
|
||||||
|
ifstream archivo;
|
||||||
|
string nomArchivo;
|
||||||
|
|
||||||
|
inicializa(cuenta);
|
||||||
|
|
||||||
|
cout << "Introduzca nombre del archivo (sin extension): ";
|
||||||
|
cin >> nomArchivo;
|
||||||
|
nomArchivo += ".txt";
|
||||||
|
archivo.open(nomArchivo);
|
||||||
|
if (!archivo.is_open()){
|
||||||
|
cout << "Error al cargar el archivo." << endl;
|
||||||
|
carga = false;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
archivo >> cuenta.apunte[cuenta.contador].fecha.dia;
|
||||||
|
while ((cuenta.apunte[cuenta.contador].fecha.dia != -1) && (cuenta.contador < MAX_APUNTES)) {
|
||||||
|
archivo >> cuenta.apunte[cuenta.contador].fecha.mes;
|
||||||
|
archivo >> cuenta.apunte[cuenta.contador].fecha.anio;
|
||||||
|
archivo >> cuenta.apunte[cuenta.contador].importe;
|
||||||
|
archivo >> cuenta.apunte[cuenta.contador].concepto;
|
||||||
|
cuenta.contador++;
|
||||||
|
archivo >> cuenta.apunte[cuenta.contador].fecha.dia;
|
||||||
|
}
|
||||||
|
carga = true;
|
||||||
|
}
|
||||||
|
archivo.close();
|
||||||
|
|
||||||
|
return carga;
|
||||||
|
}
|
||||||
|
|
||||||
|
float nomina(tCuenta& cuenta) {
|
||||||
|
bool encontrado = false;
|
||||||
|
int i = 0;
|
||||||
|
float nomina = 0;
|
||||||
|
|
||||||
|
while ((!encontrado) && (i < cuenta.contador)) {
|
||||||
|
if (cuenta.apunte[i].concepto == "Salario") {
|
||||||
|
nomina = cuenta.apunte[i].importe;
|
||||||
|
encontrado = true;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return nomina;
|
||||||
|
}
|
||||||
|
|
||||||
|
float gastoMedio(tCuenta& cuenta, const int& anio) {
|
||||||
|
float gasto = 0;
|
||||||
|
int i = 0;
|
||||||
|
|
||||||
|
while ((i < cuenta.contador)) {
|
||||||
|
if ((cuenta.apunte[i].fecha.anio == anio) && (cuenta.apunte[i].concepto == "Luz")) {
|
||||||
|
gasto += (-1 * cuenta.apunte[i].importe);
|
||||||
|
}
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
|
||||||
|
return gasto;
|
||||||
|
}
|
||||||
|
|
||||||
|
void mostrar(tCuenta& cuenta) {
|
||||||
|
cout << setw(2) << right << "DIA"
|
||||||
|
<< setw(5) << "MES"
|
||||||
|
<< setw(10) << "ANIO"
|
||||||
|
<< setw(10) << "IMPORTE"
|
||||||
|
<< setw(15) << "CONCEPTO" << endl;
|
||||||
|
cout << setw(50) << setfill('=') << "\n" << setfill(char(0));
|
||||||
|
for (int i = 0; i < cuenta.contador; i++){
|
||||||
|
cout << setw(2) << right << cuenta.apunte[i].fecha.dia
|
||||||
|
<< setw(5) << cuenta.apunte[i].fecha.mes
|
||||||
|
<< setw(10) << cuenta.apunte[i].fecha.anio
|
||||||
|
<< setw(10) << cuenta.apunte[i].importe
|
||||||
|
<< setw(15) << cuenta.apunte[i].concepto << endl;
|
||||||
|
}
|
||||||
|
cout << setw(50) << setfill('=') << "\n" << setfill(char(0));
|
||||||
|
}
|
||||||
|
|
||||||
|
void ejecutarMenu(tCuenta& cuenta) {
|
||||||
|
int opc = 1;
|
||||||
|
float anio;
|
||||||
|
|
||||||
|
while (opc != 0) {
|
||||||
|
opc = menu();
|
||||||
|
switch (opc){
|
||||||
|
case 0: break;
|
||||||
|
case 1:
|
||||||
|
if (cargar(cuenta)) {
|
||||||
|
cout << "Cargado correctamente." << endl;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
cout << "No se ha podido cargar el archivo." << endl;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 2: cout << "El importe de la primera nomina es: " << nomina(cuenta) << endl; break;
|
||||||
|
case 3:
|
||||||
|
cout << "Introduzca un anio: ";
|
||||||
|
cin >> anio;
|
||||||
|
cout << "El gasto medio de la luz en el anio " << anio << " fue: " << gastoMedio(cuenta, anio) << endl; break;
|
||||||
|
case 4: mostrar(cuenta); break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
system("PAUSE");
|
||||||
|
system("cls");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int menu() {
|
||||||
|
int opc = 0;
|
||||||
|
|
||||||
|
cout << setw(25) << setfill('=') << "MENU" << setw(25) << "\n" << setfill(char(0));
|
||||||
|
cout << "1.-Cargar cuenta de un fichero." << endl;
|
||||||
|
cout << "2.-Importe de la ultima nomina." << endl;
|
||||||
|
cout << "3.-Gasto medio de luz en un anio." << endl;
|
||||||
|
cout << "4.-Mostrar por pantalla" << endl;
|
||||||
|
cout << "0.-Salir" << endl;
|
||||||
|
cout << setw(50) << setfill('=') <<"\n" << setfill(char(0));
|
||||||
|
|
||||||
|
do {
|
||||||
|
cout << "Introduzca una opcion: ";
|
||||||
|
cin >> opc;
|
||||||
|
} while (opc < 0 || opc>4);
|
||||||
|
|
||||||
|
return opc;
|
||||||
|
}
|
Binary file not shown.
@ -0,0 +1,13 @@
|
|||||||
|
12 01 2015 500.22 Ingreso
|
||||||
|
12 01 2015 1235.45 Salario
|
||||||
|
23 01 2015 -324.24 Impuestos
|
||||||
|
03 02 2015 -35.00 Transferencia
|
||||||
|
04 02 2015 -1214.12 Transferencia
|
||||||
|
23 02 2015 -83.15 Luz
|
||||||
|
22 03 2015 -20.00 Tarjeta
|
||||||
|
12 05 2015 -124.32 Luz
|
||||||
|
23 02 2016 -23.54 Luz
|
||||||
|
03 03 2016 -20.00 Devolución
|
||||||
|
05 03 2016 1111.01 Salario
|
||||||
|
05 05 2016 1300.01 Salario
|
||||||
|
-1
|
@ -0,0 +1,258 @@
|
|||||||
|
//Examen Febrero 2017 - Grupos B, C y D
|
||||||
|
//Fernando Méndez Torrubiano
|
||||||
|
|
||||||
|
#include <iostream>
|
||||||
|
#include <string>
|
||||||
|
#include <fstream>
|
||||||
|
#include <iomanip>
|
||||||
|
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 <<setw(20) << equipos.partido[i].visitante << left
|
||||||
|
<< setw(2) << right <<setw(10) << equipos.partido[i].golesVisitante << endl;
|
||||||
|
}
|
||||||
|
cout << setfill('=') << setw(50) << "\n" << setfill(char(0)) << setw(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
int menu() {
|
||||||
|
int opc = 0;
|
||||||
|
|
||||||
|
cout << setw(35) << setfill('=') << "\n" << setfill(char(0)) << setw(0);
|
||||||
|
cout << "1.-MOSTRAR CLASIFICACION DE LA LIGA." << endl;
|
||||||
|
cout << "2.-MOSTRAR ULTIMA JORNADA." << endl;
|
||||||
|
cout << "3.-ACTUALIZAR LIGA." << endl;
|
||||||
|
cout << "4.-MOSTRAR PRIMER CLASIFICADO." << endl;
|
||||||
|
cout << "0.-SALIR." << endl;
|
||||||
|
cout << setw(35) << setfill('=') << "\n" << setfill(char(0)) << setw(0);
|
||||||
|
|
||||||
|
do {
|
||||||
|
cout << "Introduzca una opcion: ";
|
||||||
|
cin >> opc;
|
||||||
|
} while (opc < 0 || opc > 4);
|
||||||
|
|
||||||
|
return opc;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ejecutarMenu(tListaEquipos& equipos) {
|
||||||
|
int opc = 1;
|
||||||
|
|
||||||
|
while (opc != 0) {
|
||||||
|
opc = menu();
|
||||||
|
switch (opc) {
|
||||||
|
case 1: mostrarLiga(equipos); break;
|
||||||
|
case 2: mostrarJornada(equipos); break;
|
||||||
|
case 3: if (actualizarLiga(equipos)) { cout << "ACTUALIZADA CORRECTAMENTE." << endl; }
|
||||||
|
else { cout << "ERROR AL ACTUALIZAR." << endl; } break;
|
||||||
|
case 4: mostrarPrimero(equipos); break;
|
||||||
|
case 0: break;
|
||||||
|
}
|
||||||
|
system("Pause");
|
||||||
|
system("cls");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool actualizarLiga(tListaEquipos& equipos) {
|
||||||
|
bool encontrado = false;
|
||||||
|
int j = 0;
|
||||||
|
|
||||||
|
for (int i = 0; i < N/2; i++){
|
||||||
|
if (equipos.partido[i].golesLocal > equipos.partido[i].golesVisitante) {
|
||||||
|
j = 0;
|
||||||
|
while (!encontrado && j < N) {
|
||||||
|
if (equipos.equipo[j].nombre == equipos.partido[i].local) {
|
||||||
|
equipos.equipo[j].puntos += 3;
|
||||||
|
encontrado = true;
|
||||||
|
}
|
||||||
|
j++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (equipos.partido[i].golesLocal < equipos.partido[i].golesVisitante) {
|
||||||
|
j = 0;
|
||||||
|
while (!encontrado && j < N) {
|
||||||
|
if (equipos.equipo[j].nombre == equipos.partido[i].visitante) {
|
||||||
|
equipos.equipo[j].puntos += 3;
|
||||||
|
}
|
||||||
|
j++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (equipos.partido[i].golesLocal == equipos.partido[i].golesVisitante) {
|
||||||
|
j = 0;
|
||||||
|
while (j < N) {
|
||||||
|
if (equipos.equipo[j].nombre == equipos.partido[i].local) {
|
||||||
|
equipos.equipo[j].puntos += 1;
|
||||||
|
}
|
||||||
|
if (equipos.equipo[j].nombre == equipos.partido[i].visitante) {
|
||||||
|
equipos.equipo[j].puntos += 1;
|
||||||
|
}
|
||||||
|
j++;
|
||||||
|
}
|
||||||
|
encontrado = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ordenar(equipos);
|
||||||
|
|
||||||
|
return encontrado;
|
||||||
|
}
|
||||||
|
|
||||||
|
void mostrarPrimero(tListaEquipos& equipos) {
|
||||||
|
ordenar(equipos);
|
||||||
|
cout << "Primer equipo en la liga: " << equipos.equipo[0].nombre << " con " << equipos.equipo[0].puntos << " puntos." << endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
void guardarLiga(tListaEquipos& equipos) {
|
||||||
|
ofstream archivo;
|
||||||
|
|
||||||
|
archivo.open("liga.txt");
|
||||||
|
if (!archivo.is_open()) {
|
||||||
|
cout << "Error al guardar los datos." << endl;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
for (int i = 0; i < N; i++) {
|
||||||
|
archivo << equipos.equipo[i].nombre << " ";
|
||||||
|
archivo << equipos.equipo[i].puntos << endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
archivo.close();
|
||||||
|
}
|
Binary file not shown.
@ -0,0 +1,5 @@
|
|||||||
|
ATM 5 Celta 0
|
||||||
|
DEP 3 BCN 1
|
||||||
|
GET2 4 GET1 4
|
||||||
|
RM 0 ZARA 9
|
||||||
|
VAL 1 Sevilla 1
|
@ -0,0 +1,10 @@
|
|||||||
|
CELTA 42
|
||||||
|
GET1 13
|
||||||
|
ATM 53
|
||||||
|
DEP 31
|
||||||
|
BCN 53
|
||||||
|
GET2 15
|
||||||
|
ZARA 16
|
||||||
|
Sevilla 13
|
||||||
|
VAL 15
|
||||||
|
RM 49
|
@ -0,0 +1,282 @@
|
|||||||
|
//Examen Febrero 2018 - Grupos C, G e I
|
||||||
|
//Fernando Méndez Torrubiano
|
||||||
|
//Versión 2
|
||||||
|
|
||||||
|
#include <iostream>
|
||||||
|
#include <string>
|
||||||
|
#include <fstream>
|
||||||
|
#include <iomanip>
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
//Constantes:
|
||||||
|
const int MAX_NAV = 24;
|
||||||
|
|
||||||
|
//Tipos:
|
||||||
|
typedef struct tNavio {
|
||||||
|
string nombre;
|
||||||
|
string empresa;
|
||||||
|
float eslora;
|
||||||
|
float toneladas;
|
||||||
|
bool peaje;
|
||||||
|
};
|
||||||
|
typedef tNavio tNavios[MAX_NAV];
|
||||||
|
typedef struct tListaNavios {
|
||||||
|
tNavios navio;
|
||||||
|
int contador;
|
||||||
|
};
|
||||||
|
|
||||||
|
//Funciones:
|
||||||
|
void inicializa(tListaNavios&);
|
||||||
|
bool cargar(tListaNavios&);
|
||||||
|
void muestraNavios(tListaNavios&);
|
||||||
|
bool crearNavio(tListaNavios&);
|
||||||
|
bool insertarNavio(tListaNavios&, tNavio&);
|
||||||
|
bool cobrarNavio(tListaNavios&, const string&);
|
||||||
|
float peajeNavio(tListaNavios&, const int&);
|
||||||
|
float peajePagado(tListaNavios&);
|
||||||
|
void ejecutarMenu(tListaNavios&);
|
||||||
|
int menu();
|
||||||
|
bool guardar(tListaNavios&);
|
||||||
|
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
tListaNavios navios;
|
||||||
|
|
||||||
|
if (cargar(navios)) {
|
||||||
|
ejecutarMenu(navios);
|
||||||
|
if (guardar(navios)) {
|
||||||
|
cout << "Guardado correctamente." << endl;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
cout << "Error al guardar el archivo." << endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
cout << "Fin del programa." << endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void inicializa(tListaNavios& navios) {
|
||||||
|
navios.contador = 0;
|
||||||
|
for (int i = 0; i < MAX_NAV; i++){
|
||||||
|
navios.navio[i].nombre = "";
|
||||||
|
navios.navio[i].empresa = "";
|
||||||
|
navios.navio[i].eslora = 0;
|
||||||
|
navios.navio[i].toneladas = 0;
|
||||||
|
navios.navio[i].peaje = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool cargar(tListaNavios& navios) {
|
||||||
|
bool cargado = false;
|
||||||
|
ifstream archivo;
|
||||||
|
string aux = "";
|
||||||
|
|
||||||
|
inicializa(navios);
|
||||||
|
archivo.open("navios.txt");
|
||||||
|
if(!archivo.is_open()){
|
||||||
|
cout << "No se ha podido cargar el archivo." << endl;
|
||||||
|
cargado = false;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
archivo >> navios.navio[navios.contador].nombre;
|
||||||
|
while ((navios.navio[navios.contador].nombre != "XXX") && (navios.contador < MAX_NAV)) {
|
||||||
|
archivo >> navios.navio[navios.contador].empresa;
|
||||||
|
archivo >> navios.navio[navios.contador].eslora;
|
||||||
|
archivo >> navios.navio[navios.contador].toneladas;
|
||||||
|
archivo >> aux;
|
||||||
|
if (aux == "true") {
|
||||||
|
navios.navio[navios.contador].peaje = true;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
navios.navio[navios.contador].peaje = false;
|
||||||
|
}
|
||||||
|
navios.contador++;
|
||||||
|
archivo >> navios.navio[navios.contador].nombre;
|
||||||
|
}
|
||||||
|
cargado = true;
|
||||||
|
}
|
||||||
|
archivo.close();
|
||||||
|
|
||||||
|
return cargado;
|
||||||
|
}
|
||||||
|
|
||||||
|
void muestraNavios(tListaNavios& navios) {
|
||||||
|
cout << setw(15) << right << "NOMBRE"
|
||||||
|
<< setw(20) << "EMPRESA"
|
||||||
|
<< setw(10) << "ESLORA"
|
||||||
|
<< setw(15) << "TONELADAS"
|
||||||
|
<< setw(25) << "PEAJE" << endl;
|
||||||
|
cout << setw(100) << setfill('=') << "\n" << setfill(char(0));
|
||||||
|
for (int i = 0; i < navios.contador; i++){
|
||||||
|
cout << setw(15) << right << navios.navio[i].nombre
|
||||||
|
<< setw(20) << navios.navio[i].empresa
|
||||||
|
<< setw(10) << fixed << setprecision(2) << navios.navio[i].eslora
|
||||||
|
<< setw(15) << setprecision(2) << navios.navio[i].toneladas;
|
||||||
|
cout << setw(10) << peajeNavio(navios, i) << "$" << setw(12);
|
||||||
|
if (navios.navio[i].peaje == true) {
|
||||||
|
cout << "PAGADO." << endl;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
cout << "NO PAGADO." << endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
cout << setw(100) << setfill('=') << "\n" << setfill(char(0));
|
||||||
|
cout << "Total pagado: " << peajePagado(navios) << endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool crearNavio(tListaNavios& navios) {
|
||||||
|
tNavio nuevoNavio;
|
||||||
|
|
||||||
|
cout << "Introduzca nombre del navio: ";
|
||||||
|
cin >> nuevoNavio.nombre;
|
||||||
|
cout << "Introduzca empressa fabricante: ";
|
||||||
|
cin >> nuevoNavio.empresa;
|
||||||
|
cout << "Introduzca eslora (en metros): ";
|
||||||
|
cin >> nuevoNavio.eslora;
|
||||||
|
cout << "Introduzca toneladas de carga: ";
|
||||||
|
cin >> nuevoNavio.toneladas;
|
||||||
|
nuevoNavio.peaje = false;
|
||||||
|
|
||||||
|
return insertarNavio(navios, nuevoNavio);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool insertarNavio(tListaNavios& navios, tNavio& nuevoNavio) {
|
||||||
|
|
||||||
|
if (navios.contador < MAX_NAV){
|
||||||
|
navios.navio[navios.contador].nombre = nuevoNavio.nombre;
|
||||||
|
navios.navio[navios.contador].empresa = nuevoNavio.empresa;
|
||||||
|
navios.navio[navios.contador].eslora = nuevoNavio.eslora;
|
||||||
|
navios.navio[navios.contador].toneladas = nuevoNavio.toneladas;
|
||||||
|
navios.navio[navios.contador].peaje = nuevoNavio.peaje;
|
||||||
|
navios.contador++;
|
||||||
|
}
|
||||||
|
|
||||||
|
return (navios.contador < MAX_NAV) ? true : false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool cobrarNavio(tListaNavios& navios, const string& nombre) {
|
||||||
|
int i = 0;
|
||||||
|
bool encontrado = false;
|
||||||
|
|
||||||
|
while ((!encontrado) && (i <= navios.contador)) {
|
||||||
|
if (navios.navio[i].nombre == nombre) {
|
||||||
|
navios.navio[i].peaje = true;
|
||||||
|
encontrado = true;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return (navios.navio[i].nombre == nombre) ? true : false;
|
||||||
|
}
|
||||||
|
|
||||||
|
float peajeNavio(tListaNavios& navios, const int& pos) {
|
||||||
|
float pago = 0;
|
||||||
|
|
||||||
|
if (navios.navio[pos].eslora <= 100) {
|
||||||
|
pago = navios.navio[pos].toneladas * 2;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
pago = navios.navio[pos].toneladas * 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
return pago;
|
||||||
|
}
|
||||||
|
|
||||||
|
float peajePagado(tListaNavios& navios) {
|
||||||
|
float total = 0;
|
||||||
|
|
||||||
|
for (int i = 0; i < navios.contador; i++){
|
||||||
|
if (navios.navio[i].peaje == true) {
|
||||||
|
total += peajeNavio(navios, i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return total;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ejecutarMenu(tListaNavios& navios) {
|
||||||
|
int opc = 1;
|
||||||
|
string nombre;
|
||||||
|
|
||||||
|
while (opc != 0){
|
||||||
|
opc = menu();
|
||||||
|
switch (opc){
|
||||||
|
case 0: break;
|
||||||
|
case 1: muestraNavios(navios); break;
|
||||||
|
case 2:
|
||||||
|
if (crearNavio(navios)) {
|
||||||
|
cout << "Insertado correctamente." << endl;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
cout << "Error al insertar." << endl;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
cout << "Introduzca el nombre del navio a cobrar: ";
|
||||||
|
cin >> nombre;
|
||||||
|
if (cobrarNavio(navios, nombre)) {
|
||||||
|
cout << "Cobrado." << endl;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
cout << "Navio no encontrado." << endl;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
system("PAUSE");
|
||||||
|
system("cls");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int menu() {
|
||||||
|
int opc = 0;
|
||||||
|
|
||||||
|
cout << setw(20) << setfill('=') << "MENU" << setw(20) << "\n" << setfill(char(0));
|
||||||
|
cout << "1.-Mostrar navios." << endl;
|
||||||
|
cout << "2.-Insertar nuevo navio." << endl;
|
||||||
|
cout << "3.-Realizar pago." << endl;
|
||||||
|
cout << setw(40) << setfill('=') << "\n" << setfill(char(0));
|
||||||
|
|
||||||
|
do {
|
||||||
|
cout << "Introduzca una opcion: ";
|
||||||
|
cin >> opc;
|
||||||
|
} while (opc < 0 || opc > 4);
|
||||||
|
|
||||||
|
return opc;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool guardar(tListaNavios& navios) {
|
||||||
|
bool guardado = false;
|
||||||
|
ofstream archivo;
|
||||||
|
|
||||||
|
archivo.open("navios.txt");
|
||||||
|
if(!archivo.is_open()){
|
||||||
|
cout << "Error al guardar." << endl;
|
||||||
|
guardado = false;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
for (int i = 0; i < navios.contador; i++){
|
||||||
|
archivo << navios.navio[i].nombre << " "
|
||||||
|
<< navios.navio[i].empresa << " "
|
||||||
|
<< navios.navio[i].eslora << " "
|
||||||
|
<< navios.navio[i].toneladas << " ";
|
||||||
|
if (navios.navio[i].peaje == true) {
|
||||||
|
archivo << "true" << endl;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
archivo << "false" << endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
archivo << "XXX";
|
||||||
|
guardado = true;
|
||||||
|
}
|
||||||
|
archivo.close();
|
||||||
|
|
||||||
|
return guardado;
|
||||||
|
}
|
@ -0,0 +1,215 @@
|
|||||||
|
/*
|
||||||
|
Apellidos: Verdú Rodríguez
|
||||||
|
Nombre: Eva
|
||||||
|
DNI: 51220965B
|
||||||
|
Puesto: 15
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <iostream>
|
||||||
|
#include <fstream>
|
||||||
|
#include <string>
|
||||||
|
#include <iomanip>
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
//Constantes:
|
||||||
|
const int MAX_NAV = 24;
|
||||||
|
const string CENT = "XXX";
|
||||||
|
|
||||||
|
typedef struct tNavios{
|
||||||
|
string nom;
|
||||||
|
string empr;
|
||||||
|
float esl;
|
||||||
|
float ton;
|
||||||
|
string pag;
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef tNavios tListaNav[MAX_NAV];
|
||||||
|
|
||||||
|
typedef struct tListaNavios {
|
||||||
|
tListaNav lista;
|
||||||
|
int cont;
|
||||||
|
};
|
||||||
|
|
||||||
|
//Funciones:
|
||||||
|
int menu();
|
||||||
|
bool cargar(tListaNavios & lista); //Carga el archivo.
|
||||||
|
void muestraNavios(const tListaNavios lista);
|
||||||
|
float peajeNavio(const tNavios navio);
|
||||||
|
float peajePagado(const tListaNavios lista);
|
||||||
|
void crearNavio(tListaNavios & lista);
|
||||||
|
bool insertaNavio(const tNavios navio, tListaNavios & lista);
|
||||||
|
bool cobrarNavio(tListaNavios & lista, string name);
|
||||||
|
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
tListaNavios lista;
|
||||||
|
string name;
|
||||||
|
bool cobrar = true;
|
||||||
|
bool ok = cargar(lista);
|
||||||
|
int opc=0;
|
||||||
|
if (ok) {
|
||||||
|
do{
|
||||||
|
opc = menu();
|
||||||
|
switch (opc) {
|
||||||
|
case 1:
|
||||||
|
muestraNavios(lista);
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
crearNavio(lista);
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
cout << "Introduce Nombre del Navio: ";
|
||||||
|
cin >> name;
|
||||||
|
cobrar = cobrarNavio(lista , name);
|
||||||
|
if (!cobrar) {
|
||||||
|
cout << "Error. Barco no encontrado" << endl;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} while (opc != 0);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
cout << "Error al abrir el archivo" << endl;
|
||||||
|
}
|
||||||
|
system("pause");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int menu() {
|
||||||
|
int opc;
|
||||||
|
cout << "---------------------------------" << endl;
|
||||||
|
cout << "Elige una opcion: " << endl;
|
||||||
|
cout << "1 - Muestra la lista" << endl;
|
||||||
|
cout << "2 - Nuevo navio" << endl;
|
||||||
|
cout << "3 - Pagar navio" << endl;
|
||||||
|
cout << "0 - Salir" << endl;
|
||||||
|
cout << "---------------------------------" << endl;
|
||||||
|
cin >> opc;
|
||||||
|
while (opc < 0 || opc > 3) {
|
||||||
|
cout << "Error. Ponga un valor entre 0 y 3." << endl;
|
||||||
|
}
|
||||||
|
return opc;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool cargar(tListaNavios & lista){
|
||||||
|
bool ok = true;
|
||||||
|
string aux;
|
||||||
|
ifstream archivo;
|
||||||
|
lista.cont = 0;
|
||||||
|
|
||||||
|
archivo.open("navios.txt");
|
||||||
|
if (archivo.is_open()) {
|
||||||
|
archivo >> lista.lista[lista.cont].nom;
|
||||||
|
while((lista.lista[lista.cont].nom != CENT) && (lista.cont < MAX_NAV)) {
|
||||||
|
archivo >> lista.lista[lista.cont].empr;
|
||||||
|
archivo >> lista.lista[lista.cont].esl;
|
||||||
|
archivo >> lista.lista[lista.cont].ton;
|
||||||
|
archivo >> lista.lista[lista.cont].pag;
|
||||||
|
lista.cont++;
|
||||||
|
archivo >> lista.lista[lista.cont].nom;
|
||||||
|
}
|
||||||
|
archivo.close();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
ok = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return ok;
|
||||||
|
}
|
||||||
|
|
||||||
|
void muestraNavios(const tListaNavios lista) {
|
||||||
|
int i = 0;
|
||||||
|
float peaje = 0;
|
||||||
|
cout << "Navio" << setw(20) << "Empresa" << setw(20) << "Eslora" << setw(20) << "Toneladas" << setw(20) << "Peaje" << setw(20) << endl;
|
||||||
|
cout << setw(100) << setfill('=') << "\n";
|
||||||
|
cout << setw(100) << setfill(' ') << "\n";
|
||||||
|
for (int i = 0; i < lista.cont; i++){
|
||||||
|
cout << setw(20) << left << lista.lista[i].nom;
|
||||||
|
cout << setw(20) << lista.lista[i].empr;
|
||||||
|
cout << fixed << setprecision(2) << setw(15) << lista.lista[i].esl;
|
||||||
|
cout << setw(15) << lista.lista[i].ton;
|
||||||
|
peaje = peajeNavio(lista.lista[i]);
|
||||||
|
if (lista.lista[i].pag == "true") {
|
||||||
|
cout << setw(10) << right << peaje << " Pagado" << endl;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
cout << setw(10) << right << peaje << " No Pagado" << endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
cout << setw(100) << setfill('=') << '\n';
|
||||||
|
float total = peajePagado(lista);
|
||||||
|
cout << "Precio total: " << total << endl;
|
||||||
|
cout << setw(100) << setfill(' ') << '\n';
|
||||||
|
}
|
||||||
|
|
||||||
|
float peajeNavio(const tNavios navio) {
|
||||||
|
float peaje;
|
||||||
|
if (navio.esl < 100) {
|
||||||
|
peaje = navio.ton * 2;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
peaje = navio.ton * 3;
|
||||||
|
}
|
||||||
|
return peaje;
|
||||||
|
}
|
||||||
|
|
||||||
|
float peajePagado(const tListaNavios lista) {
|
||||||
|
float total = 0;
|
||||||
|
for (int i = 0; i < lista.cont; i++){
|
||||||
|
if (lista.lista[i].pag == "true") {
|
||||||
|
float peaje = peajeNavio(lista.lista[i]);
|
||||||
|
total += peaje;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return total;
|
||||||
|
}
|
||||||
|
|
||||||
|
void crearNavio(tListaNavios & lista) {
|
||||||
|
tNavios navio;
|
||||||
|
cout << "Introduzca nombre: ";
|
||||||
|
cin >> navio.nom;
|
||||||
|
cout << "Introduzca compañia: ";
|
||||||
|
cin >> navio.empr;
|
||||||
|
cout << "Introduzca eslora: ";
|
||||||
|
cin >> navio.esl;
|
||||||
|
cout << "Introduzca tonaledas: ";
|
||||||
|
cin >> navio.ton;
|
||||||
|
navio.pag = "false";
|
||||||
|
if (insertaNavio(navio, lista)) {
|
||||||
|
cout << "Se ha insertado correctamente" << endl;
|
||||||
|
cout << setw(100) << setfill(' ') << '\n';
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
cout << "No se pudo introducir" << endl;
|
||||||
|
cout << setw(100) << setfill(' ') << '\n';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool insertaNavio(const tNavios navio, tListaNavios & lista) {
|
||||||
|
bool insertar = true;;
|
||||||
|
if (lista.cont < MAX_NAV) {
|
||||||
|
lista.lista[lista.cont].nom = navio.nom;
|
||||||
|
lista.lista[lista.cont].empr = navio.empr;
|
||||||
|
lista.lista[lista.cont].esl = navio.esl;
|
||||||
|
lista.lista[lista.cont].ton = navio.ton;
|
||||||
|
lista.lista[lista.cont].pag = navio.pag;
|
||||||
|
lista.cont++;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
insertar = false;
|
||||||
|
}
|
||||||
|
return insertar;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool cobrarNavio(tListaNavios & lista, string name) {
|
||||||
|
bool cobrar = false;
|
||||||
|
int i = 0;
|
||||||
|
while (!cobrar && i < lista.cont ) {
|
||||||
|
if (lista.lista[i].nom == name) {
|
||||||
|
lista.lista[i].pag = "true";
|
||||||
|
cobrar = true;
|
||||||
|
}
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
return cobrar;
|
||||||
|
}
|
@ -0,0 +1,262 @@
|
|||||||
|
//Examen Febreo 2018
|
||||||
|
//Fernando Méndez Torrubiano
|
||||||
|
|
||||||
|
#include <iostream>
|
||||||
|
#include <string>
|
||||||
|
#include <fstream>
|
||||||
|
#include <iomanip>
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
//Constantes:
|
||||||
|
const int MAX_NAV = 24;
|
||||||
|
|
||||||
|
//Tipos:
|
||||||
|
typedef string tNombres[MAX_NAV];
|
||||||
|
typedef float tMedidas[MAX_NAV];
|
||||||
|
|
||||||
|
typedef struct tNavios {
|
||||||
|
tNombres nombre;
|
||||||
|
tNombres empresa;
|
||||||
|
tMedidas eslora;
|
||||||
|
tMedidas toneladas;
|
||||||
|
tNombres peaje;
|
||||||
|
int contador;
|
||||||
|
};
|
||||||
|
|
||||||
|
//Funciones:
|
||||||
|
void inicializa(tNavios&, tNavios&);
|
||||||
|
bool cargar(tNavios&);
|
||||||
|
void ejecutarMenu(tNavios&, tNavios&);
|
||||||
|
int menu();
|
||||||
|
void muestraNavios(tNavios&);
|
||||||
|
void crearNavio(tNavios&);
|
||||||
|
bool insertarNavio(tNavios&, tNavios&);
|
||||||
|
bool cobrarNavio(tNavios&);
|
||||||
|
float peajeNavio(tNavios&, const int pos);
|
||||||
|
float peajePagado(tNavios&);
|
||||||
|
void guardar(tNavios&);
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
tNavios nave;
|
||||||
|
tNavios nuevo;
|
||||||
|
bool carga = false;
|
||||||
|
|
||||||
|
inicializa(nave, nuevo);
|
||||||
|
carga = cargar(nave);
|
||||||
|
if (carga) {
|
||||||
|
ejecutarMenu(nave, nuevo);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
system("PAUSE");
|
||||||
|
}
|
||||||
|
guardar(nave);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void inicializa(tNavios& nave, tNavios& nuevo) {
|
||||||
|
|
||||||
|
for (int i = 0; i < MAX_NAV; i++) {
|
||||||
|
nave.nombre[i] = "";
|
||||||
|
nave.empresa[i] = "";
|
||||||
|
nave.eslora[i] = 0;
|
||||||
|
nave.toneladas [i]= 0;
|
||||||
|
nave.peaje[i] = "";
|
||||||
|
}
|
||||||
|
nave.contador = 0;
|
||||||
|
nuevo.contador = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool cargar(tNavios& nave) {
|
||||||
|
ifstream archivo;
|
||||||
|
bool carga = false;
|
||||||
|
|
||||||
|
archivo.open("navios.txt");
|
||||||
|
if (!archivo.is_open()) {
|
||||||
|
cout << "Error al cargar el archivo." << endl;
|
||||||
|
carga = false;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
archivo >> nave.nombre[nave.contador];
|
||||||
|
while ((nave.nombre[nave.contador] != "XXX") && (nave.contador < MAX_NAV)) {
|
||||||
|
archivo >> nave.empresa[nave.contador];
|
||||||
|
archivo >> nave.eslora[nave.contador];
|
||||||
|
archivo >> nave.toneladas[nave.contador];
|
||||||
|
archivo >> nave.peaje[nave.contador];
|
||||||
|
nave.contador++;
|
||||||
|
archivo >> nave.nombre[nave.contador];
|
||||||
|
}
|
||||||
|
carga = true;
|
||||||
|
}
|
||||||
|
archivo.close();
|
||||||
|
|
||||||
|
return carga;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ejecutarMenu(tNavios& nave, tNavios& nuevo) {
|
||||||
|
int opc = 1;
|
||||||
|
bool insertado = false;
|
||||||
|
|
||||||
|
while (opc != 0) {
|
||||||
|
system("cls");
|
||||||
|
opc = menu();
|
||||||
|
switch (opc){
|
||||||
|
case 1: muestraNavios(nave); break;
|
||||||
|
case 2: crearNavio(nuevo);
|
||||||
|
insertado = insertarNavio(nave, nuevo);
|
||||||
|
if (!insertado) {
|
||||||
|
cout << "No se ha podido añadir un nuevo navio." << endl;
|
||||||
|
system("PAUSE");
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
cout << "Navio insertado correctamente." << endl;
|
||||||
|
system("PAUSE");
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 3: cobrarNavio(nave); break;
|
||||||
|
case 0: break;
|
||||||
|
default: break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int menu() {
|
||||||
|
int opc = 0;
|
||||||
|
|
||||||
|
//cout << setfill('-') << setw(25) << "\n";
|
||||||
|
cout << "1.-VER LISTA DE NAVIOS." << "\n";
|
||||||
|
cout << "2.-AGREGAR NAVIO." << "\n";
|
||||||
|
cout << "3.-COBRAR PEAJE." << "\n";
|
||||||
|
cout << "0.-SALIR." << "\n";
|
||||||
|
//cout << setfill('-') << setw(25) << "\n";
|
||||||
|
|
||||||
|
do{
|
||||||
|
cout << "\n Intruduzca una opcion: ";
|
||||||
|
cin >> opc;
|
||||||
|
} while ((opc < 0) || (opc > 3));
|
||||||
|
|
||||||
|
return opc;
|
||||||
|
}
|
||||||
|
|
||||||
|
void muestraNavios(tNavios& nave) {
|
||||||
|
cout << setfill(char(0)) << setw(15)
|
||||||
|
<< left << "NOMBRE" << setw(15)
|
||||||
|
<< left << "EMPRESA" << setw(15)
|
||||||
|
<< left << "ESLORA" << setw(20)
|
||||||
|
<< left << "DESPLAZAMIENTO" << setw(20)
|
||||||
|
<< left << "PEAJE";
|
||||||
|
|
||||||
|
cout << setw(85) << setfill('=') << "\n" << setfill(char(0)) << endl;
|
||||||
|
for (int i = 0; i < nave.contador; i++) {
|
||||||
|
cout << setw(15) << left << nave.nombre[i] << setw(15)
|
||||||
|
<< left << nave.empresa[i] << setw(15)
|
||||||
|
<< left << fixed << setprecision(2) << nave.eslora[i] << setw(20)
|
||||||
|
<< left << nave.toneladas[i] << setw(10);
|
||||||
|
if (nave.peaje[i] == "true") {
|
||||||
|
cout << peajeNavio(nave, i) << "PAGADO\n";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
cout << peajeNavio(nave, i) << "NO PAGADO\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
cout << setw(85) << setfill('=') << "\n";
|
||||||
|
cout << setw(0) << setfill(char(0)) << "\n";
|
||||||
|
system("PAUSE");
|
||||||
|
}
|
||||||
|
|
||||||
|
void crearNavio(tNavios& nuevo) {
|
||||||
|
string nombre;
|
||||||
|
|
||||||
|
nuevo.contador++;
|
||||||
|
cout << "Introduzca NOMBRE del navio: ";
|
||||||
|
cin >> nuevo.nombre[nuevo.contador];
|
||||||
|
cout << "Introduzca EMPRESA fabricante: ";
|
||||||
|
cin >> nuevo.empresa[nuevo.contador];
|
||||||
|
cout << "Introduzca ESLORA del navio: ";
|
||||||
|
cin >> nuevo.eslora[nuevo.contador];
|
||||||
|
cout << "Introduzca TONELADAS del navio: ";
|
||||||
|
cin >> nuevo.toneladas[nuevo.contador];
|
||||||
|
cout << "Introduzca PEAJE (true/false): ";
|
||||||
|
cin >> nuevo.peaje[nuevo.contador];
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
bool insertarNavio(tNavios& nave, tNavios& nuevo) {
|
||||||
|
bool insertado = false;
|
||||||
|
|
||||||
|
if (nave.contador < MAX_NAV) {
|
||||||
|
nave.nombre[nave.contador] = nuevo.nombre[nuevo.contador];
|
||||||
|
nave.empresa[nave.contador] = nuevo.empresa[nuevo.contador];
|
||||||
|
nave.eslora[nave.contador] = nuevo.eslora[nuevo.contador];
|
||||||
|
nave.toneladas[nave.contador] = nuevo.toneladas[nuevo.contador];
|
||||||
|
nave.peaje[nave.contador] = nuevo.peaje[nuevo.contador];
|
||||||
|
nave.contador++;
|
||||||
|
insertado = true;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
insertado = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return insertado;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool cobrarNavio(tNavios& nave) {
|
||||||
|
bool encontrado = false;
|
||||||
|
string nom;
|
||||||
|
int i = 0;
|
||||||
|
|
||||||
|
cout << "Introduzca el nombre del navio que quiere pagar: ";
|
||||||
|
cin >> nom;
|
||||||
|
|
||||||
|
while ((i < nave.contador) && (!encontrado)) {
|
||||||
|
if (nave.nombre[i] == nom) {
|
||||||
|
nave.peaje[i] = "true";
|
||||||
|
encontrado = true;
|
||||||
|
}
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
|
||||||
|
return encontrado;
|
||||||
|
}
|
||||||
|
|
||||||
|
float peajeNavio(tNavios& nave, const int pos) {
|
||||||
|
float precio = 0;
|
||||||
|
|
||||||
|
if (nave.eslora[pos] <= 100) {
|
||||||
|
precio = nave.toneladas[pos] * 2;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
precio = nave.toneladas[pos] * 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
return precio;
|
||||||
|
}
|
||||||
|
|
||||||
|
float peajePagado(tNavios& nave) {
|
||||||
|
float pagos = 0;
|
||||||
|
|
||||||
|
for (int i = 0; i < nave.contador; i++) {
|
||||||
|
if (nave.peaje[i] == "true") {
|
||||||
|
pagos += peajeNavio(nave, i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return pagos;
|
||||||
|
}
|
||||||
|
|
||||||
|
void guardar(tNavios& nave) {
|
||||||
|
ofstream archivo;
|
||||||
|
|
||||||
|
archivo.open("navios.txt");
|
||||||
|
if(archivo.is_open()){
|
||||||
|
for (int i = 0; i < nave.contador; i++) {
|
||||||
|
archivo << nave.nombre[i] << " ";
|
||||||
|
archivo << nave.empresa[i] << " ";
|
||||||
|
archivo << nave.eslora[i] << " ";
|
||||||
|
archivo << nave.toneladas[i] << " ";
|
||||||
|
archivo << nave.peaje[i] << " " << endl;
|
||||||
|
}
|
||||||
|
archivo << "XXX";
|
||||||
|
}
|
||||||
|
archivo.close();
|
||||||
|
}
|
Binary file not shown.
@ -0,0 +1,6 @@
|
|||||||
|
Prestill pocoImporta 90 2634 true
|
||||||
|
Pluton CAMPSA 104.2 2852 false
|
||||||
|
CostaArrecife Costa 337 183900 false
|
||||||
|
USSuranus UnitedFruit 82.14 3348 true
|
||||||
|
Dedalo ArmadaEspanola 190 13000 false
|
||||||
|
XXX
|
Binary file not shown.
After Width: | Height: | Size: 99 KiB |
Binary file not shown.
After Width: | Height: | Size: 78 KiB |
Binary file not shown.
After Width: | Height: | Size: 79 KiB |
Binary file not shown.
After Width: | Height: | Size: 79 KiB |
Binary file not shown.
After Width: | Height: | Size: 80 KiB |
Binary file not shown.
After Width: | Height: | Size: 72 KiB |
@ -0,0 +1,238 @@
|
|||||||
|
//Examen Enero 2019 - Grupos A, B, D y G.
|
||||||
|
//Fernando Méndez Torrubiano
|
||||||
|
|
||||||
|
#include <iostream>
|
||||||
|
#include <string>
|
||||||
|
#include <fstream>
|
||||||
|
#include <iomanip>
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
//Constantes:
|
||||||
|
const int MAX_PEDIDOS = 50;
|
||||||
|
|
||||||
|
//Tipos:
|
||||||
|
typedef struct tPedido {
|
||||||
|
string numPedido, nombreCliente, direccion, codRepartidor;
|
||||||
|
bool estado;
|
||||||
|
};
|
||||||
|
typedef tPedido tPedidos[MAX_PEDIDOS];
|
||||||
|
typedef struct tListaPedidos {
|
||||||
|
tPedidos pedido;
|
||||||
|
int contador;
|
||||||
|
};
|
||||||
|
|
||||||
|
//Funciones:
|
||||||
|
void inicializa(tListaPedidos&);
|
||||||
|
bool cargar(tListaPedidos&);
|
||||||
|
bool actualizarPedido(tListaPedidos&, const string&);
|
||||||
|
void mostrarPedidos(tListaPedidos&);
|
||||||
|
int posicionRepartidor(tListaPedidos&, const string&);
|
||||||
|
void mostrarPedidosRepartidor(tListaPedidos&, const string&);
|
||||||
|
bool guardarPedidos(tListaPedidos&);
|
||||||
|
void ejecutarMenu(tListaPedidos&);
|
||||||
|
int menu();
|
||||||
|
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
tListaPedidos pedidos;
|
||||||
|
|
||||||
|
if (cargar(pedidos)) {
|
||||||
|
ejecutarMenu(pedidos);
|
||||||
|
if (guardarPedidos(pedidos)) {
|
||||||
|
cout << "Guardado correctamente." << endl;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
cout << "Error al guardar." << endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
cout << "Fin del programa." << endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
system("PAUSE");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void inicializa(tListaPedidos& pedidos) {
|
||||||
|
pedidos.contador = 0;
|
||||||
|
for (int i = 0; i < MAX_PEDIDOS; i++){
|
||||||
|
pedidos.pedido[i].numPedido = "";
|
||||||
|
pedidos.pedido[i].nombreCliente = "";
|
||||||
|
pedidos.pedido[i].direccion = "";
|
||||||
|
pedidos.pedido[i].codRepartidor = "";
|
||||||
|
pedidos.pedido[i].estado = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool cargar(tListaPedidos& pedidos) {
|
||||||
|
bool carga = false;
|
||||||
|
ifstream archivo;
|
||||||
|
|
||||||
|
inicializa(pedidos);
|
||||||
|
archivo.open("pedidos.txt");
|
||||||
|
if (!archivo.is_open()) {
|
||||||
|
cout << "No se ha podido cargar el archivo." << endl;
|
||||||
|
carga = false;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
while ((!archivo.eof()) && (pedidos.contador < MAX_PEDIDOS)) {
|
||||||
|
getline(archivo, pedidos.pedido[pedidos.contador].numPedido);
|
||||||
|
getline(archivo, pedidos.pedido[pedidos.contador].nombreCliente);
|
||||||
|
getline(archivo, pedidos.pedido[pedidos.contador].direccion);
|
||||||
|
getline(archivo, pedidos.pedido[pedidos.contador].codRepartidor);
|
||||||
|
pedidos.contador++;
|
||||||
|
}
|
||||||
|
carga = true;
|
||||||
|
}
|
||||||
|
archivo.close();
|
||||||
|
|
||||||
|
return carga;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool actualizarPedido(tListaPedidos& pedidos, const string& numPedido) {
|
||||||
|
bool encontrado = false;
|
||||||
|
int i = 0;
|
||||||
|
|
||||||
|
while ((!encontrado) && (i < pedidos.contador)) {
|
||||||
|
if (pedidos.pedido[i].numPedido == numPedido) {
|
||||||
|
pedidos.pedido[i].estado = true;
|
||||||
|
encontrado = true;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return encontrado;
|
||||||
|
}
|
||||||
|
|
||||||
|
void mostrarPedidos(tListaPedidos& pedidos) {
|
||||||
|
cout << setw(15) << right << "NUMERO PEDIDO"
|
||||||
|
<< setw(25) << "CLIENTE"
|
||||||
|
<< setw(40) << "DIRECCION"
|
||||||
|
<< setw(15) << "REPARTIDOR"
|
||||||
|
<< setw(15) << "ESTADO" << endl;
|
||||||
|
cout << setw(115) << setfill('=') << "\n" << setfill(char(0));
|
||||||
|
for (int i = 0; i < pedidos.contador-1; i++) {
|
||||||
|
cout << setw(15) << right << pedidos.pedido[i].numPedido
|
||||||
|
<< setw(25) << pedidos.pedido[i].nombreCliente
|
||||||
|
<< setw(40) << pedidos.pedido[i].direccion
|
||||||
|
<< setw(15) << pedidos.pedido[i].codRepartidor;
|
||||||
|
if (pedidos.pedido[i].estado == true) {
|
||||||
|
cout << setw(15) << "ENTREGADO" << endl;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
cout << setw(15) << "PENDIENTE" << endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
cout << setw(115) << setfill('=') << "\n" << setfill(char(0));
|
||||||
|
}
|
||||||
|
|
||||||
|
int posicionRepartidor(tListaPedidos& pedidos, const string& codRepartidor) {
|
||||||
|
int pos = 0;
|
||||||
|
bool encontrado = false;
|
||||||
|
|
||||||
|
while ((!encontrado) && (pos <= pedidos.contador)) {
|
||||||
|
if (pedidos.pedido[pos].codRepartidor == codRepartidor) {
|
||||||
|
encontrado = true;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
pos++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return pos;
|
||||||
|
}
|
||||||
|
|
||||||
|
void mostrarPedidosRepartidor(tListaPedidos& pedidos, const string& codRepartidor) {
|
||||||
|
int pos = posicionRepartidor(pedidos, codRepartidor);
|
||||||
|
|
||||||
|
if (pos < pedidos.contador) {
|
||||||
|
cout << endl << "Pedidos pendientes del repartidor: " << codRepartidor << endl;
|
||||||
|
cout << setw(70) << setfill('=') << "\n" << setfill(char(0));
|
||||||
|
cout << "Numero de pedido: " << pedidos.pedido[pos].numPedido << endl;
|
||||||
|
cout << "Cliente: " << pedidos.pedido[pos].nombreCliente << endl;
|
||||||
|
cout << "Direccion de entrega: " << pedidos.pedido[pos].direccion << endl;
|
||||||
|
cout << setw(70) << setfill('=') << "\n" << setfill(char(0));
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
cout << "Repartidor no encontrado." << endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
bool guardarPedidos(tListaPedidos& pedidos) {
|
||||||
|
bool save = false;
|
||||||
|
ofstream archivo;
|
||||||
|
|
||||||
|
archivo.open("pendientes.txt");
|
||||||
|
if (!archivo.is_open()) {
|
||||||
|
save = false;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
for (int i = 0; i < pedidos.contador; i++){
|
||||||
|
if (pedidos.pedido[i].estado == false) {
|
||||||
|
archivo << pedidos.pedido[i].numPedido << endl
|
||||||
|
<< pedidos.pedido[i].nombreCliente << endl
|
||||||
|
<< pedidos.pedido[i].direccion << endl
|
||||||
|
<< pedidos.pedido[i].codRepartidor << endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
save = true;
|
||||||
|
}
|
||||||
|
archivo.close();
|
||||||
|
|
||||||
|
return save;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ejecutarMenu(tListaPedidos& pedidos) {
|
||||||
|
int opc = 1;
|
||||||
|
string codRepartidor, numPedido;
|
||||||
|
|
||||||
|
while (opc != 0) {
|
||||||
|
opc = menu();
|
||||||
|
switch (opc) {
|
||||||
|
case 0: break;
|
||||||
|
case 1:
|
||||||
|
cout << "Codigo de repartidor: ";
|
||||||
|
cin >> codRepartidor;
|
||||||
|
mostrarPedidosRepartidor(pedidos, codRepartidor);
|
||||||
|
system("PAUSE");
|
||||||
|
break;
|
||||||
|
case 2: mostrarPedidos(pedidos); system("PAUSE"); break;
|
||||||
|
case 3:
|
||||||
|
cout << "Introduzca numero de pedido: ";
|
||||||
|
cin >> numPedido;
|
||||||
|
if (actualizarPedido(pedidos, numPedido)) {
|
||||||
|
cout << "Pedido " << numPedido << " actualizado correctamente." << endl;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
cout << "Pedido no encontrado." << endl;
|
||||||
|
}
|
||||||
|
system("PAUSE");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
system("cls");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
int menu() {
|
||||||
|
int opc = 0;
|
||||||
|
|
||||||
|
cout << setw(20) << setfill('=') << "MENU" << setw(20) << "\n" << setfill(char(0));
|
||||||
|
cout << "1.-Mostrar todos los pedidos pendientes de un repartidor." << endl;
|
||||||
|
cout << "2.-Mostrar todos los pedidos." << endl;
|
||||||
|
cout << "3.-Registro pedido entregado." << endl;
|
||||||
|
cout << "0.-Salir." << endl;
|
||||||
|
cout << setw(40) << setfill('=') << "\n" << setfill(char(0));
|
||||||
|
|
||||||
|
do {
|
||||||
|
cout << "Introduzca una opcion: ";
|
||||||
|
cin >> opc;
|
||||||
|
} while (opc < 0 || opc > 3);
|
||||||
|
|
||||||
|
return opc;
|
||||||
|
}
|
@ -0,0 +1,20 @@
|
|||||||
|
3421
|
||||||
|
Pilar Gil
|
||||||
|
Paseo Delicias 52 28046 Madrid
|
||||||
|
R7689
|
||||||
|
12345
|
||||||
|
Carlos Campos
|
||||||
|
Plaza del Carmen 14 28004 Madrid
|
||||||
|
R7689
|
||||||
|
5284
|
||||||
|
Carmen Santos
|
||||||
|
Padilla 6 28001 Madrid
|
||||||
|
R9876
|
||||||
|
15289
|
||||||
|
Carlos Camacho
|
||||||
|
Plaza del Carmen 14 28004 Madrid
|
||||||
|
R9876
|
||||||
|
34210
|
||||||
|
Pilar Alcocer
|
||||||
|
Paseo Delicias 52 28046 Madrid
|
||||||
|
R7000
|
@ -0,0 +1,258 @@
|
|||||||
|
//Examen Enero 2019 - Grupos D, E e I.
|
||||||
|
//Fernando Méndez Torrubiano
|
||||||
|
|
||||||
|
|
||||||
|
#include <iostream>
|
||||||
|
#include <string>
|
||||||
|
#include <fstream>
|
||||||
|
#include <iomanip>
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
//Constantes:
|
||||||
|
const int MAX_MILI = 50;
|
||||||
|
const int MAX_SUB = 24;
|
||||||
|
|
||||||
|
|
||||||
|
//Tipos:
|
||||||
|
typedef struct tTiempo {
|
||||||
|
int horas, minutos, segundos, milisegundos;
|
||||||
|
};
|
||||||
|
typedef struct tSubtitulo {
|
||||||
|
tTiempo tiempoIni, tiempoFin;
|
||||||
|
string subtitulo;
|
||||||
|
};
|
||||||
|
typedef tSubtitulo tSubtitulos[MAX_SUB];
|
||||||
|
typedef struct tListaSub {
|
||||||
|
tSubtitulos subtitulo;
|
||||||
|
int contador;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
//Funciones:
|
||||||
|
void inicializa(tListaSub&);
|
||||||
|
bool cargar(tListaSub&);
|
||||||
|
int toMilisegundos(tTiempo&);
|
||||||
|
int desajuste(const string&, const int&);
|
||||||
|
void mostrar(tListaSub&);
|
||||||
|
void cambiarTexto(tListaSub&);
|
||||||
|
void buscar(tListaSub&);
|
||||||
|
bool buscarMili(tListaSub&, const int&, int&);
|
||||||
|
bool guardar(tListaSub&);
|
||||||
|
void ejecutarMenu(tListaSub&);
|
||||||
|
int menu();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
tListaSub subtitulos;
|
||||||
|
system("chcp 1252");
|
||||||
|
system("cls");
|
||||||
|
|
||||||
|
if (cargar(subtitulos)) {
|
||||||
|
ejecutarMenu(subtitulos);
|
||||||
|
if (guardar(subtitulos)) {
|
||||||
|
cout << "Guardado correctamente." << endl;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
cout << "Error al guardar." << endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
cout << "Fin del programa." << endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
system("PAUSE");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void inicializa(tListaSub& subtitulos) {
|
||||||
|
subtitulos.contador = 0;
|
||||||
|
for (int i = 0; i < MAX_SUB; i++){
|
||||||
|
subtitulos.subtitulo[i].tiempoIni.horas = 0;
|
||||||
|
subtitulos.subtitulo[i].tiempoIni.minutos = 0;
|
||||||
|
subtitulos.subtitulo[i].tiempoIni.segundos = 0;
|
||||||
|
subtitulos.subtitulo[i].tiempoIni.milisegundos = 0;
|
||||||
|
subtitulos.subtitulo[i].tiempoFin.horas = 0;
|
||||||
|
subtitulos.subtitulo[i].tiempoFin.minutos = 0;
|
||||||
|
subtitulos.subtitulo[i].tiempoFin.segundos = 0;
|
||||||
|
subtitulos.subtitulo[i].tiempoFin.milisegundos = 0;
|
||||||
|
subtitulos.subtitulo[i].subtitulo = "";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool cargar(tListaSub& subtitulos) {
|
||||||
|
bool cargado = false;
|
||||||
|
ifstream archivo;
|
||||||
|
|
||||||
|
inicializa(subtitulos);
|
||||||
|
archivo.open("subtitulos.txt");
|
||||||
|
if (!archivo.is_open()) {
|
||||||
|
cout << "Error al cargar el archivo." << endl;
|
||||||
|
cargado = false;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
while ((!archivo.eof()) && (subtitulos.contador < MAX_SUB)) {
|
||||||
|
archivo >> subtitulos.subtitulo[subtitulos.contador].tiempoIni.horas;
|
||||||
|
archivo.ignore();
|
||||||
|
archivo >> subtitulos.subtitulo[subtitulos.contador].tiempoIni.minutos;
|
||||||
|
archivo.ignore();
|
||||||
|
archivo >> subtitulos.subtitulo[subtitulos.contador].tiempoIni.segundos;
|
||||||
|
archivo.ignore();
|
||||||
|
archivo >> subtitulos.subtitulo[subtitulos.contador].tiempoIni.milisegundos;
|
||||||
|
archivo.ignore();
|
||||||
|
archivo >> subtitulos.subtitulo[subtitulos.contador].tiempoFin.horas;
|
||||||
|
archivo.ignore();
|
||||||
|
archivo >> subtitulos.subtitulo[subtitulos.contador].tiempoFin.minutos;
|
||||||
|
archivo.ignore();
|
||||||
|
archivo >> subtitulos.subtitulo[subtitulos.contador].tiempoFin.segundos;
|
||||||
|
archivo.ignore();
|
||||||
|
archivo >> subtitulos.subtitulo[subtitulos.contador].tiempoFin.milisegundos;
|
||||||
|
archivo.ignore();
|
||||||
|
getline(archivo, subtitulos.subtitulo[subtitulos.contador].subtitulo);
|
||||||
|
subtitulos.contador++;
|
||||||
|
}
|
||||||
|
cargado = true;
|
||||||
|
}
|
||||||
|
archivo.close();
|
||||||
|
|
||||||
|
return cargado;
|
||||||
|
}
|
||||||
|
|
||||||
|
int toMilisegundos(tTiempo& tiempo) {
|
||||||
|
int tiempoMS = 0, tiempoSec = 0, tiempoMin = 0;
|
||||||
|
|
||||||
|
tiempoMin = (tiempo.horas * 60) + tiempo.minutos;
|
||||||
|
tiempoSec = (tiempoMin * 60) + tiempo.segundos;
|
||||||
|
tiempoMS = (tiempoSec * 1000) + tiempo.milisegundos;
|
||||||
|
|
||||||
|
return tiempoMS;
|
||||||
|
}
|
||||||
|
|
||||||
|
int desajuste(const string& subtitulo, const int& intervalo) {
|
||||||
|
int desajuste = 0, tiempoSub = 0, diferencia = 0;
|
||||||
|
|
||||||
|
if (intervalo > 0) {
|
||||||
|
tiempoSub = subtitulo.length() * MAX_MILI;
|
||||||
|
diferencia = tiempoSub - intervalo;
|
||||||
|
desajuste = diferencia / MAX_MILI;
|
||||||
|
}
|
||||||
|
|
||||||
|
return desajuste;
|
||||||
|
}
|
||||||
|
|
||||||
|
void mostrar(tListaSub& subtitulos) {
|
||||||
|
|
||||||
|
cout << setw(40) << setfill('=') << "\n" << setfill(char(0));
|
||||||
|
for (int i = 0; i < subtitulos.contador; i++){
|
||||||
|
cout << "Intervalo: " << toMilisegundos(subtitulos.subtitulo[i].tiempoIni) << " --> " << toMilisegundos(subtitulos.subtitulo[i].tiempoFin) << endl
|
||||||
|
<< "Texto: " << subtitulos.subtitulo[i].subtitulo << endl << endl;
|
||||||
|
}
|
||||||
|
cout << setw(40) << setfill('=') << "\n" << setfill(char(0));
|
||||||
|
}
|
||||||
|
|
||||||
|
void cambiarTexto(tListaSub& subtitulos) {
|
||||||
|
int pos = 0;
|
||||||
|
|
||||||
|
cout << endl;
|
||||||
|
do {
|
||||||
|
cout << "Posicion en la lista: ";
|
||||||
|
cin >> pos;
|
||||||
|
} while (pos < 0 || pos >= subtitulos.contador);
|
||||||
|
|
||||||
|
cout << "Texto: ";
|
||||||
|
cin.ignore();
|
||||||
|
getline(cin, subtitulos.subtitulo[pos].subtitulo);
|
||||||
|
}
|
||||||
|
|
||||||
|
void buscar(tListaSub& subtitulos) {
|
||||||
|
int mili = 0, pos = 0, intervalo = 0;
|
||||||
|
|
||||||
|
cout << setw(40) << setfill('=') << "\n" << setfill(char(0));
|
||||||
|
cout << "Milisegundos: ";
|
||||||
|
cin >> mili;
|
||||||
|
|
||||||
|
if (buscarMili(subtitulos, mili, pos)) {
|
||||||
|
cout << "Encontrado en la posicion: " << pos << endl
|
||||||
|
<< "Intervalo: " << toMilisegundos(subtitulos.subtitulo[pos].tiempoIni) << " --> " << toMilisegundos(subtitulos.subtitulo[pos].tiempoFin) << endl
|
||||||
|
<< "Texto: " << subtitulos.subtitulo[pos].subtitulo << endl;
|
||||||
|
intervalo = toMilisegundos(subtitulos.subtitulo[pos].tiempoFin) - toMilisegundos(subtitulos.subtitulo[pos].tiempoIni);
|
||||||
|
cout << "Desajuste: " << desajuste(subtitulos.subtitulo[pos].subtitulo, intervalo) << endl;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
cout << "No encontrado." << endl;
|
||||||
|
}
|
||||||
|
cout << setw(40) << setfill('=') << "\n" << setfill(char(0));
|
||||||
|
}
|
||||||
|
|
||||||
|
bool buscarMili(tListaSub& subtitulos, const int& mili, int& i) {
|
||||||
|
bool encontrado = false;
|
||||||
|
|
||||||
|
while ((!encontrado) && (i < subtitulos.contador)) {
|
||||||
|
if ((mili > toMilisegundos(subtitulos.subtitulo[i].tiempoIni)) && (mili < toMilisegundos(subtitulos.subtitulo[i].tiempoFin))) {
|
||||||
|
encontrado = true;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return encontrado;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool guardar(tListaSub& subtitulos) {
|
||||||
|
bool save = false;
|
||||||
|
ofstream archivo;
|
||||||
|
|
||||||
|
archivo.open("subtitulosEX.txt");
|
||||||
|
if (!archivo.is_open()) {
|
||||||
|
save = false;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
for (int i = 0; i < subtitulos.contador; i++){
|
||||||
|
archivo << toMilisegundos(subtitulos.subtitulo[i].tiempoIni) << " "
|
||||||
|
<< toMilisegundos(subtitulos.subtitulo[i].tiempoFin) << " "
|
||||||
|
<< subtitulos.subtitulo[i].subtitulo << endl;
|
||||||
|
}
|
||||||
|
save = true;
|
||||||
|
}
|
||||||
|
archivo.close();
|
||||||
|
|
||||||
|
return save;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ejecutarMenu(tListaSub& subtitulos) {
|
||||||
|
int opc = 1;
|
||||||
|
|
||||||
|
while (opc != 0) {
|
||||||
|
opc = menu();
|
||||||
|
switch (opc){
|
||||||
|
case 0: break;
|
||||||
|
case 1: mostrar(subtitulos); system("PAUSE"); break;
|
||||||
|
case 2: cambiarTexto(subtitulos); system("PAUSE"); break;
|
||||||
|
case 3: buscar(subtitulos); system("PAUSE"); break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
system("cls");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
int menu() {
|
||||||
|
int opc = 0;
|
||||||
|
|
||||||
|
cout << setw(20) << setfill('=') << "MENU" << setw(20) << "\n" << setfill(char(0));
|
||||||
|
cout << "1.-Mostrar lista." << endl;
|
||||||
|
cout << "2.-Cambiar texto." << endl;
|
||||||
|
cout << "3.-Buscar subtitulo." << endl;
|
||||||
|
cout << "0.-Salir." << endl;
|
||||||
|
cout << setw(40) << setfill('=') << "\n" << setfill(char(0));
|
||||||
|
|
||||||
|
do {
|
||||||
|
cout << "Introduzca una opcion: ";
|
||||||
|
cin >> opc;
|
||||||
|
} while (opc < 0 || opc > 3);
|
||||||
|
|
||||||
|
return opc;
|
||||||
|
}
|
||||||
|
|
Binary file not shown.
@ -0,0 +1,5 @@
|
|||||||
|
00:00:00,394 00:00:03,031 Anteriormente en Sons of Anarchy...
|
||||||
|
00:00:03,510 00:00:04,260 Ponte esto. Ayudará.
|
||||||
|
00:10:13,990 00:10:14,703 Texto del subtítulo 4.
|
||||||
|
00:20:19,008 00:25:19,100 Se vengó de la persona equivocada. Y ahora tiene a mi hijo.
|
||||||
|
01:00:59,998 01:01:00,123 Texto del subtítulo 11.
|
Loading…
Reference in New Issue
Block a user