/*-------------------------------------------------------------- * PROGRAMA : talmacen.c * GESTION DE UN ALMACEN DE DATOS SOBRE UNA TABLA: * DESCRIPCIÓN: Gestión de una tabla como un almacen de datos * Los datos se almacenan en la primera posición libre de la tabla * El valor 0 indica que la posición está libre * * Ej .- Almacen con 5 valores y 4 posiciones libres * +-----+-----+-----+-----+-----+-----+-----+-----+-----+ * | 2 | 23 | 0 | 12 | 0 | 29 | 5 | 0 | 0 | * +-----+-----+-----+-----+-----+-----+-----+-----+-----+ * * * AUTOR: Alberto López & Alumnos de 1º ASI. * * VERSION: 0.0 * * Fecha: * * ---------------------------------------------------------------*/ #include #define N 10 // Tamaño del almacen /* Tabla almacen Variable GLOBAL */ int almacen[N]; /* ------------------------------------------- * Lista de funciones que gestionan el almacen * implementadas en este módulo. * ------------------------------------------- */ void InitAlmacen(void); int Pon(int valor); int Borrar(int valor); int Buscar(int valor); void MostrarAlmacen(void); void MostrarDatosAlmacen(void); int Inventario(void); int Primero (int *valor); int Ultimo (int *valor); void Empaquetar (void ); /* ---------------------------------------------- * FUNCION: void InitAlmacen() * DESCRIPCION: Inicializa el almacen con todas las * posiciones con libres * PARAMETROS: Ninguno * DEVUELVE: Nada * ----------------------------------------------*/ void InitAlmacen() { } /* ---------------------------------------------- * FUNCION: int Pon (int valor) * DESCRIPCION: Coloca un valor en la primera * posición libre del almacen. * PARAMETROS: int valor (E) Valor a almacenar * DEVUELVE: 1 Si éxito o 0 si fallo. * ----------------------------------------------*/ int Pon (int valor) { } /* ---------------------------------------------- * FUNCION: int Buscar(int valor) * DESCRIPCION: Indica si un elemento se encuentra en la tabla * PARAMETROS: int valor (E) valor a buscar * DEVUELVE: 1 si está o O si el elemento no se encuentra * ----------------------------------------------*/ int Buscar(int valor) { } /* ---------------------------------------------- * FUNCION: void MostrarAlmacen() * DESCRIPCION: Muestra el contenido completo de la tabla * PARAMETROS: (Ninguno) * DEVUELVE: (Ninguno) * ----------------------------------------------*/ void MostrarAlmacen() { } /* ---------------------------------------------- * FUNCION: void MostrarDatosAlmacen() * DESCRIPCION: Muestra los datos almacenados en la tabla * no muestras las posiciones libre = 0 * PARAMETROS: (Ninguno) * DEVUELVE: (Ninguno) * ----------------------------------------------*/ void MostrarDatosAlmacen() { } /* ---------------------------------------------- * FUNCION: int Inventario() * DESCRIPCION: Calcula el número de elementos almacenados * PARAMETROS: (Ninguno) * DEVUELVE: El número de elementos almacenados (Posiciones ocupadas != 0) * ----------------------------------------------*/ int Inventario() { } /* ---------------------------------------------- * FUNCION: int Borrar(int valor) * DESCRIPCION: Borrar un elemento de la tabla * marcando su posición como libre = 0 * PARAMETROS: Valor a borrar * DEVUELVE: 1 si éxito o 0 si el elemento no está * en la tabla * ----------------------------------------------*/ int Borrar(int valor) { } /* ---------------------------------------------- * FUNCION: void Empaquetar() * DESCRIPCION: Suprime los espaciones libre intermedios colocando todos los datos junto: 19 0 2 0 0 7 9 0 --> 19 2 7 9 0 0 0 0 * PARAMETROS: (ninguno) * DEVUELVE: (nada) * ----------------------------------------------*/ void Empaquetar() { } /* ---------------------------------------------- * FUNCION: int Primero(int *pvalor) * DESCRIPCION: Guarda en el parámetro pvalor * el contenido de la primera posición ocupada * en la tabla * PARAMETROS: int *pvalor (S) Puntero con la dirección * del valor donde tengo que asigna la primera posición * DEVUELVE: 1 si éxito o 0 si no existe ningún elemento, * es decir, la tabla está vacia * ----------------------------------------------*/ int Primero(int *pvalor) { } /* ---------------------------------------------- * FUNCION: int Ultimo(int *valor) * DESCRIPCION: Guarda en el parámetro valor * el contenido de la última posición ocupada * en la tabla * PARAMETROS: int *pvalor (S) Puntero con la dirección * del valor donde tengo que asigna la última posición * DEVUELVE: 1 si éxito o 0 si no existe ningún elemento, * es decir, la tabla está vacia * ----------------------------------------------*/ int Ultimo(int *pdato) { } /*------------------------------------- PROGRAMA PRINCIPAL que prueba las funciones del almacen. -------------------------------------*/ void main() { int num; char opcion; do { puts("\n\n\n\n\n\n\n\n\n\n"); puts("\t\t MENU DE ALMACEN"); puts("\t +-----------------------------------+"); puts("\t | 1.- Inicializar |"); puts("\t | 2.- Poner Dato |"); puts("\t | 3.- Borrar Dato |"); puts("\t | 4.- Mostrar Almacen |"); puts("\t | 5.- Mostrar Almacen (solo datos) |"); puts("\t | 6.- Primer valor |"); puts("\t | 7.- Ultimo valor |"); puts("\t | 8.- Inventario |"); puts("\t | 9.- Empaquetar |"); puts("\t | 0.- Terminar |"); puts("\t +-----------------------------------+"); printf("\t\t Indicar Operacion:[0-9]"); fflush(stdin); opcion = getchar(); puts("------------------------------------------"); switch (opcion) { case '1': InitAlmacen(); puts(">>Almacen inicializado"); break; case '2': printf(" Valor a introduccir:"); scanf("%d",&num); if (Pon (num) ) { puts(">>Elemento Almacenado"); } else { puts(">>Almacen Lleno."); } break; case '3':printf(" Valor a Eliminar:"); scanf("%d",&num); if (Borrar (num) ) { puts(">>Elemento Borrado"); } else { puts(">>No se encuentra el elemento"); } break; case '4':MostrarAlmacen();break; case '5':MostrarDatosAlmacen();break; case '6':if ( Primero(&num)) { printf(">>El primer valor es %d \n",num); } else { puts(">>Almacen vacio"); } break; case '7':if ( Ultimo (&num)) { printf(">>El último valor es %d \n",num); } else { puts(">>Almacen vacio"); } break; case '8':printf(">>Total de elemento en almacen: %d\n",Inventario());break; case '9':Empaquetar(); printf(">>Almacen empaquetado"); break; case '0':break; default: puts(">>Opción no válida "); } puts("------------------------------------------"); if ( opcion != '0' ) { fflush(stdin); puts("\n\t Pulse ENTER para continuar:"); getchar(); } } while ( opcion != '0' ); }