El caso es que es un problema mucho más amplio y va a salir un código fuente enorme.En cualquier caso aqui está:
/*Problema nº1.Gestión de un almacén.
#include<stdio.h>
#include<conio.h>
#define <string.h>
#define TCODIGO 14/*Los códigos de barras de los productos reales tienen 13
números*/
#define TNOMBRE 20
#define TALMACEN 50
struct Tgestion{
char codigo[TCODIGO];/*Utilizo una cadena de caracteres y no una variable
de tipo unsigned ya que los números de código no
se va a modificar*/
char nombre[TNOMBRE];
float peso,volumen;
};
void intro_producto(struct Tgestion p[],int&tam)/*Función 1*/
{
if(tam<TALMACEN)/*Con esta instrucción nos aseguramos que no nos salimos del
array de estructuras producto*/
{
Printf("\nIntroduce el codigo de barras");
scanf("%s",p[tam].codigo);
printf("\nIntroduce el nombre del producto");
getchar();
gets(p[tam].nombre);
printf("\nIntroduce el peso (Kg)");
scanf("%f",&p[tam].peso);
printf("\nIntroduce el volumen del producto (cm3)");
scanf("%f",&p[tam].volumen);
++tam;/*Aumento en uno el numero de productos.*/
}
else
printf("\n\a ATENCIÓN no caben más productos");
}
int buscar_producto(struct Tgestion p[],int tam,char nombreBuscado[])/*Función 2*/
{
int i=0,pos=-1;
while(i<tam && strcmp(nombrebuscado,p[i].nombre)!=0)
i++:
if(i<tam)
pos=i;
return pos;
}
void borrar(struct Tgestion &producto)/*Al pasar la estructura correspondiente
a la posición p por referencia se va a
borrar permanentemente este producto del
array de estructuras de productos*/
{
int main()
{
struct Tgestion producto[TALMACEN];
char opcion;
int nuproduc=0;/*En un principio considero que no hay ningún producto en el
array de estructuras producto*/
char nombrebuscado[20];
do
{
printf("\n\n\n****GESTION PRODUCTOS DE ALMACEN,MENU DE OPCIONES****");
printf("\n a.Introducir un nuevo producto");
printf("\n b.Borrar un producto")
printf("\n c.Modificar datos de un producto exiztente en el almacen");
printf("\n d.Mostrar todos lo productos en existencia");
printf("\n e.Ordenar la lista de productos segun su nombre");
printf("\n f.Ordenar la lista de productos según sus pesos");
printf("\n s.Salir del programa");
printf("\nElija una opcion");
scanf("%c",&opcion);
switch(opcion)
{
case 's':break;
case 'a':intro_producto(producto,nuproduc);
break;
case b:printf("\nIntroduce el nombre del producto a borrar: ");
gets(nombrebuscado);/*Primero busco,por su nombre,el producto a
borrar*/
p=buscar_producto(producto,nuproduc,nombrebuscado);
if(p!=-1)
borrar_producto(producto[p])/*Este valor de p es la posición
devuelto la función buscar_producto
Es decir,producto[p] es una estructura*/
else
printf("\nProducto no encontrado");
break;
/*Faltan las restantes opciones*/
}
}while(opcion!='s');
getch();
return 0;