Ya están colgadas todas las soluciones del tema 3.
Os querría pedir un favor, a ver si podéis echarle un vistazo a este código y decidme si está bien o mal o cómo podría hacerlo mejor. Es que este tipo de ejercicios (algo más complejo, claro está) es uno de los que suelen caer en el examen y siempre he tenido "problemas" con ellos. Para ver si más o menos le voy cogiendo el hilo...
Una farmacia desea almacenar sus productos (TProducto) en una estructura. De cada producto hay que almacenar la siguiente información: código (unsigned), nombre (string), precio (float), fecha de caducidad (definir un tipo de registro para la fecha). Diseña la estructura de datos (TFarmacia) para almacenar un máximo de MAX (una constante) productos y realiza los siguientes subalgoritmos: (son los subprogramas que he puesto más abajo).
#include <iostream>
#include<string>
using namespace std;
const unsigned MAX = 50;
struct TFecha{
unsigned dia,mes,anyo;
};
struct TProducto{
unsigned codigo;
string nombre;
float precio;
TFecha fecha_cad;
};
typedef TProducto TMedicamentos[MAX];
struct TFarmacia{
TMedicamentos med;
unsigned num;
};
void LeerProducto(TProducto& p){
cout << "Introduzca codigo: ";
cin >> p.codigo;
cout << "Introduzca nombre: ";
getline(cin,p.nombre);
cout << "Introduzca precio: ";
cin >> p.precio;
cout << "FECHA: " << endl;
cout << "Introduzca dia: ";
do{
cin >> p.fecha_cad.dia;
}while((p.fecha_cad.dia<1)||(p.fecha_cad.dia>31));
cout << "Introduzca mes: ";
do{
cin >> p.fecha_cad.mes;
}while((p.fecha_cad.mes<1)||(p.fecha_cad.mes>12));
cout << "Introduzca año: ";
cin >> anyo;
}
void EscribirProducto(const TProducto& p){
cout << "Codigo: " << p.codigo << endl;
cout << "Nombre: " << p.nombre << endl;
cout << "Precios: " << p.precio << endl;
cout << "Fecha: " << p.fecha_cad.dia << "/" << p.fecha_cad.mes << "/" << p.fecha_cad.anyo << endl;
}
void inicializarFarmacia(TFarmacia& f){
f.num = 0;
}
void insertarProducto(TFarmacia& f, const TProducto& p){
f.med[f.num] = p;
f.num++;
}
void BorrarProducto(TFarmacia& f, unsigned codigo){
bool esta = false;
unsigned i;
for(i=0;i<f.num;i++){
if(f.med[i].codigo == codigo){
esta = true;
break;
}
}
if(esta){
f.med[i] = f.med[f.num-1];
f.num--;
}else{
cout << "No esta" << endl;
}
}
void BuscarProductoCodigo(const TFarmacia& f, unsigned codigo, bool& encontrado, TProducto& p){
encontrado = false;
for(unsigned i=0;i<f.num;i++){
if(f.med[i].codigo == codigo){
p = f.med[i];
encontrado = true;
break;
}
}
}
void BuscarProductoNombre(const TFarmacia& f, const string& nombre, bool& encontrado, TProducto& p){
encontrado = false;
for(unsigned i=0;i<f.num;i++){
if(f.med[i].nombre == nombre){
p = f.med[i];
encontrado = true;
break;
}
}
}
void ListarFarmacia(const TFarmacia& f){
for(unsigned i=0;i<f.num;i++){
EscribirProducto(f.med[i]);
cout << endl;
}
}
Gracias!!