REGISTROS EN C++: DEFINICIÓN
struct typeFecha {
int dia,mes,anyo;
}; ➔ Tipo de datos typeFecha
struct typeProducto { int idProducto;
int precioProducto;
int unidadesProducto;
typeFecha entradaProducto;
string descripcionProducto;
};
➔ Tipo de datos typeProducto
struct typeAlmacen {
typeProducto listaProductos[N];
int cantidadProductos;
};
➔ Tipo de datos typeAlmacen
typeAlmacen trastero; ➔ Declaración de la variable trastero
ESTADO DEL ALMACÉN tras la inicialización:
cantidadProductos = 4 listaProductos
0 1 2 3 4
idProducto 13234 58741 98761 98762
precioProducto 235 32 999 90
unidadesProducto 23 0 12 120
entradaProducto dia mes anyo dia mes anyo dia mes anyo dia mes anyo 16 6 2015 2 5 2017 24 10 2015 4 8 2016
CLASES PARTICULARES, TUTORÍAS TÉCNICAS ONLINE LLAMA O ENVÍA WHATSAPP: 689 45 44 70
- - -
ONLINE PRIVATE LESSONS FOR SCIENCE STUDENTS
CALL OR WHATSAPP:689 45 44 70
REGISTROS EN C++: FICHEROS
13234 235 23 16 6 2015 Paquetes 500 58741 32 0 2 5 2017 Portaminas
void leerFicheroAlmacen(string nombreFichero, typeAlmacen &almacen ) { int contador=0;
ifstream ficheroEntrada;
ficheroEntrada.open(nombreFichero.c_str());
if (ficheroEntrada.is_open()) { typeProducto producto ;
ficheroEntrada >> producto.idProducto;
while (!ficheroEntrada.eof()) {
ficheroEntrada >> producto.precioProducto;
ficheroEntrada >> producto.unidadesProducto;
ficheroEntrada >> producto.entradaProducto .dia;
ficheroEntrada >> producto.entradaProducto.mes;
ficheroEntrada >> producto.entradaProducto.anyo;
getline(ficheroEntrada,producto.descripcionProducto);
almacen.listaProductos[contador]=producto;
contador=contador+1;
ficheroEntrada >> producto.idProducto;
}
almacen.cantidadProductos=contador;
ficheroEntrada.close();
}
else cout << "Fichero no encontrado o falta de permisos ";
}
CLASES PARTICULARES, TUTORÍAS TÉCNICAS ONLINE LLAMA O ENVÍA WHATSAPP: 689 45 44 70
- - -
ONLINE PRIVATE LESSONS FOR SCIENCE STUDENTS CALL OR WHATSAPP:689 45 44 70
www.cartagena99.com no se hace responsable de la información contenida en el presente documento en virtud al
REGISTROS EN C++: FICHEROS
void escribirFicheroAlmacen( typeAlmacen almacen ,string nombreFichero) { ofstream ficheroSalida;
ficheroSalida.open(nombreFichero.c_str());
for (int contador=0;contador<almacen.cantidadProductos;contador++) { typeProducto producto =almacen.listaProductos[contador];
ficheroSalida << producto.idProducto << " ";
ficheroSalida << producto.precioProducto << " ";
ficheroSalida << producto.unidadesProducto << " ";
ficheroSalida << producto.entradaProducto .dia << " ";
ficheroSalida << producto.entradaProducto.mes << " ";
ficheroSalida << producto.entradaProducto.anyo << " ";
ficheroSalida << producto.descripcionProducto << endl;
}
ficheroSalida.close();
}
CLASES PARTICULARES, TUTORÍAS TÉCNICAS ONLINE LLAMA O ENVÍA WHATSAPP: 689 45 44 70
- - -
ONLINE PRIVATE LESSONS FOR SCIENCE STUDENTS
CALL OR WHATSAPP:689 45 44 70
REGISTROS EN C++: BÚSQUEDA NO ORDENADA
int buscarProducto( typeAlmacen almacen , typeProducto producto ) { bool encontrado=false;
int posicion=0;
while (posicion<almacen.cantidadProductos && !encontrado) {
typeProducto productoAlmacen=almacen.listaProductos[posicion];
if ( productoAlmacen.idProducto!=producto.idProducto ) posicion=posicion+1;
else
encontrado=true;
}
if (!encontrado) posicion=-1;
return posicion;
}
almacen
cantidadProductos = 4 listaProductos
0 1 2 3 4
posicion
idProducto 13234 58741 98761 98762
precioProducto 235 32 999 90
unidadesProducto 23 0 12 120
entradaProducto dia mes anyo dia mes anyo dia mes anyo dia mes anyo 16 6 2015 2 5 2017 24 10 2015 4 8 2016 descripcionProducto Folios 500 Portaminas Bolígrafos Lapiceros
producto
idProducto 58741 precioProducto - unidadesProducto -
entradaProducto dia mes anyo - - - descripcionProducto -
CLASES PARTICULARES, TUTORÍAS TÉCNICAS ONLINE LLAMA O ENVÍA WHATSAPP: 689 45 44 70
- - -
ONLINE PRIVATE LESSONS FOR SCIENCE STUDENTS CALL OR WHATSAPP:689 45 44 70
www.cartagena99.com no se hace responsable de la información contenida en el presente documento en virtud al
REGISTROS EN C++: INSERCIÓN SIN DESPLAZAMIENTO (I)
bool insertarProducto( typeAlmacen &almacen , typeProducto producto ) { bool modificacion=false;
int posicion=buscarProducto(almacen,producto);
if (posicion!=-1) {
almacen.listaProductos[posicion].unidadesProducto+=
producto.unidadesProducto;
modificacion=true; } else {
bool hueco=almacen.cantidadProductos<N;
if (hueco) {
almacen.listaProductos[almacen.cantidadProductos]=producto;
almacen.cantidadProductos+=1;
modificacion=true; } } return modificacion;
}
almacen
cantidadProductos = 4 listaProductos
0 1 2 3 4
posicion
idProducto 13234 58741 98761 98762
precioProducto 235 32 999 90
unidadesProducto 23 0 → 12 12 120
entradaProducto dia mes anyo dia mes anyo dia mes anyo dia mes anyo 16 6 2015 2 5 2017 24 10 2015 4 8 2016
producto
idProducto 58741 precioProducto - unidadesProducto 12
entradaProducto dia mes anyo - - - descripcionProducto -
CLASES PARTICULARES, TUTORÍAS TÉCNICAS ONLINE LLAMA O ENVÍA WHATSAPP: 689 45 44 70
- - -
ONLINE PRIVATE LESSONS FOR SCIENCE STUDENTS
CALL OR WHATSAPP:689 45 44 70
REGISTROS EN C++: INSERCIÓN SIN DESPLAZAMIENTO (II)
bool insertarProducto( typeAlmacen &almacen , typeProducto producto ) { bool modificacion=false;
int posicion=buscarProducto(almacen,producto);
if (posicion!=-1) {
almacen.listaProductos[posicion].unidadesProducto+=
producto.unidadesProducto;
modificacion=true; } else {
bool hueco=almacen.cantidadProductos<N ; if (hueco) {
almacen.listaProductos[almacen.cantidadProductos]=producto;
almacen.cantidadProductos+=1;
modificacion=true; } } return modificacion;
}
almacen
cantidadProductos = 4 listaProductos
0 1 2 3 4
idProducto 13234 58741 98761 98762
precioProducto 235 32 999 90
unidadesProducto 23 0 12 120
entradaProducto dia mes anyo dia mes anyo dia mes anyo dia mes anyo 16 6 2015 2 5 2017 24 10 2015 4 8 2016 descripcionProducto Folios 500 Portaminas Bolígrafos Lapiceros
producto
idProducto 58700 precioProducto 200 unidadesProducto 12
entradaProducto dia mes anyo 28 04 2020 descripcionProducto Cuadernos
CLASES PARTICULARES, TUTORÍAS TÉCNICAS ONLINE LLAMA O ENVÍA WHATSAPP: 689 45 44 70
- - -
ONLINE PRIVATE LESSONS FOR SCIENCE STUDENTS CALL OR WHATSAPP:689 45 44 70
www.cartagena99.com no se hace responsable de la información contenida en el presente documento en virtud al
REGISTROS EN C++
almacen
cantidadProductos = 5 listaProductos
0 1 2 3 4
idProducto 13234 58741 98761 98762 58700
precioProducto 235 32 999 90 200
unidadesProducto 23 0 12 120 12
entradaProducto dia mes anyo dia mes anyo dia mes anyo dia mes anyo dia mes anyo 16 6 2015 2 5 2017 24 10 2015 4 8 2016 28 04 2020 descripcionProducto Folios 500 Portaminas Bolígrafos Lapiceros Cuadernos
int main() {
typeAlmacen trastero;
leerFicheroAlmacen("almacen.txt",trastero);
typeProducto objeto;
objeto.idProducto=58700;
objeto.precioProducto=200;
objeto.unidadesProducto=12;
objeto.entradaProducto.dia=28;
objeto.entradaProducto.mes=04;
objeto.entradaProducto.anyo=2020;
objeto.descripcionProducto="Cuadernos";
int posicion=buscarProducto(trastero,objeto);
bool actualizacion=insertarProducto(trastero,objeto);
if (actualizacion)
cout << "ALMACÉN ACTUALIZADO" << endl;
else
cout << "ALMACÉN NO ACTUALIZADO" << endl;
CLASES PARTICULARES, TUTORÍAS TÉCNICAS ONLINE LLAMA O ENVÍA WHATSAPP: 689 45 44 70
- - -
ONLINE PRIVATE LESSONS FOR SCIENCE STUDENTS
CALL OR WHATSAPP:689 45 44 70
REGISTROS EN C++: ELIMINACIÓN SIN DESPLAZAMIENTO
bool eliminarProducto( typeAlmacen &almacen ,
int idProducto , int unidadesProducto ) { bool modificacion=false; typeProducto producto;
producto.idProducto=idProducto; producto.unidadesProducto=unidadesProducto;
int posicion=buscarProducto(almacen,producto);
if (posicion!=-1) {
int unidadesAntes=almacen.listaProductos[posicion].unidadesProducto;
if (unidadesAntes>0) {
int unidadesDespues=unidadesAntes-unidadesProducto;
if (unidadesDespues<0) unidadesDespues=0;
almacen.listaProductos[posicion].unidadesProducto=unidadesDespues;
modificacion=true; } }
return modificacion;
}
almacen
cantidadProductos = 4 listaProductos
0 1 2 3 4
posicion
idProducto 13234 58741 98761 98762
precioProducto 235 32 999 90
unidadesProducto 23
0,30,10 → 0,10,012 120
entradaProducto dia mes anyo dia mes anyo dia mes anyo dia mes anyo 16 6 2015 2 5 2017 24 10 2015 4 8 2016 descripcionProducto Folios 500 Portaminas Bolígrafos Lapiceros
producto
idProducto 58741 precioProducto - unidadesProducto 20
entradaProducto dia mes anyo - - - descripcionProducto -
CLASES PARTICULARES, TUTORÍAS TÉCNICAS ONLINE LLAMA O ENVÍA WHATSAPP: 689 45 44 70
- - -
ONLINE PRIVATE LESSONS FOR SCIENCE STUDENTS CALL OR WHATSAPP:689 45 44 70
www.cartagena99.com no se hace responsable de la información contenida en el presente documento en virtud al
REGISTROS EN C++: CONSULTA
float costeMedioAlmacen( typeAlmacen almacen ) { int unidadesTotal=0;
int precioTotal=0;
for (int posicion=0;posicion<almacen.cantidadProductos;posicion=posicion+1) { typeProducto productoAlmacen=almacen.listaProductos[posicion];
unidadesTotal+=productoAlmacen.unidadesProducto;
precioTotal+=productoAlmacen.precioProducto*
productoAlmacen.unidadesProducto;
}
if (unidadesTotal==0) return 0;
else
return precioTotal/(float)unidadesTotal;
}
almacen
cantidadProductos = 5 listaProductos
0 1 2 3 4
posicion
idProducto 13234 58741 98761 98762 58700
precioProducto 235 32 999 90 200
unidadesProducto 23 0 12 120 12
entradaProducto dia mes anyo dia mes anyo dia mes anyo dia mes anyo dia mes anyo 16 6 2015 2 5 2017 24 10 2015 4 8 2016 28 04 2020 descripcionProducto Folios 500 Portaminas Bolígrafos Lapiceros Cuadernos
unidadesTotal 0 23 0 12 120 12 CLASES PARTICULARES, TUTORÍAS TÉCNICAS ONLINE LLAMA O ENVÍA WHATSAPP: 689 45 44 70
- - -
ONLINE PRIVATE LESSONS FOR SCIENCE STUDENTS
CALL OR WHATSAPP:689 45 44 70
REGISTROS EN C++: ASPECTOS PENDIENTES 1. BÚSQUEDA ORDENADA.
2. INSERCIÓN CON DESPLAZAMIENTO.
3. ELIMINACIÓN CON DESPLAZAMIENTO.
CLASES PARTICULARES, TUTORÍAS TÉCNICAS ONLINE LLAMA O ENVÍA WHATSAPP: 689 45 44 70
- - -
ONLINE PRIVATE LESSONS FOR SCIENCE STUDENTS CALL OR WHATSAPP:689 45 44 70
www.cartagena99.com no se hace responsable de la información contenida en el presente documento en virtud al