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:
Fernando Méndez
2019-06-20 12:26:55 +02:00
committed by GitHub
parent 36df5ecef5
commit 07651a8047
58 changed files with 4923 additions and 0 deletions

View File

@ -0,0 +1,282 @@
//Examen Febrero 2018 - Grupos C, G e I
//Fernando M<>ndez Torrubiano
//Versi<73>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;
}

View File

@ -0,0 +1,215 @@
/*
Apellidos: Verd<72> Rodr<64>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<70>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;
}

View File

@ -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();
}

View File

@ -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