Exámenes Resueltos FP - Primer Semestre
Para uso exclusivo con fines de estudio. Se prohíbe su uso para entregas calificables y/o uso comercial.
This commit is contained in:
@ -0,0 +1,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<51>
|
||||
//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<73>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
|
Reference in New Issue
Block a user