Funciones del Código:
Ejemplifica las pilas en c con el ejemplo de un estacionamiento de una única linea
1.-Pide al usuario ingrese una matricula y la almacenara en una posición de la pila (Estacionamiento)
2.-Muestra la posición de las matriculas en la pila
3.-Al sacar algún elemento de la pila (Matriculas) este mostrara cuantos elementos se tuvieron que sacar antes
#include stdio.h #include stdlib.h #include string.h #include ctype.h typedef char placas[30]; typedef struct{ int tope; placas parking[11]; }struct_pila; char pop(struct_pila *p,struct_pila *est); void push(struct_pila *p,char *); void estacionamiento(struct_pila p); void posicion(struct_pila p); int validar_placas(char *); int main(){ int q,g; char matricula[7]; int opc; struct_pila p; struct_pila est; est.tope=-1; p.tope=-1; while(q!=2){ system("cls"); printf("Estacionamiento \n"); printf("1.- Entrada de vehiculo \n"); printf("2.- Salida de vehiculo \n"); printf("3.- Ver estacionamiento \n"); printf("4.- Salir \n"); printf("Indica la opcion: "); scanf("%d", &opc); switch(opc) { case 1:system("cls"); printf("Ingrese Matricula del vehiculo "); printf("Ejemplo: 111ABC \n"); fflush(stdin); printf("Matricula:"); gets(matricula); g=validar_placas(&matricula); if(g==0){ break; } push(&p,matricula); break; case 2:system("cls"); estacionamiento(p); posicion(p); pop(&p,&est); break; case 3:system("cls"); estacionamiento(p); break; case 4:return 0; break; default : printf("Opcion no valida\n" ); break; } printf("\n¿Desea hacer otro movimiento?\n"); printf("1.-si\n"); printf("2.-no\n\n"); printf("Opcion:"); scanf("%d",&q); } } char pop(struct_pila *p,struct_pila *est){ char c1[7]; char sal[7]; int pos,i=0; int c,w; printf("\n\nSalida de Automovil\n"); printf("Ingrese la posicion de su Automovil\n"); printf("Posicion:"); scanf("%d",&pos); w=p->tope; w=w-1; if(pos==p->tope){ printf("\nEl auto salio sin tener que mover otro auto\n"); p->tope--; } c=p->tope; pos=pos-1; while(c!=pos){ est->tope++; strcpy(est->parking[est->tope],p->parking[p->tope]); p->tope--; i++; c--; } i=i-1; printf("\nSe Movieron %d Automoviles para sacar su auto\n",i); while(p->tope!=w){ strcpy(p->parking[p->tope],est->parking[est->tope]); est->tope--; p->tope++; } } void push(struct_pila *p,char *matricula){ if(p->tope<9 p-="">tope++; strcpy(p->parking[p->tope],matricula); printf("\nSe estaciono su Automovil con exito\n"); printf("________________________________________________________\n"); printf("|No. de placas: %s |posicion actual del Automovil: %d |\n",p->parking[p->tope],p->tope); printf("________________________________________________________\n"); } else{ printf("\nNo queda espacio en el Estacionamiento\n"); } } void estacionamiento(struct_pila p){ int i; char coche; int f=-1; if (p.tope==f) printf("El Estacionamiento esta vacio.\n\n"); else { printf("En el estacionamiento se encuentran los coches:\n\n"); printf("%d \n",p.tope); printf("_______________________________________________________________\n\n"); while (p.tope!=f) { i=p.tope; printf(" <-- actual="" automovil:="" char="" coche="" d="" de="" del="" else="" esta="" estacionamiento="" f="" hx="x/2;" i="0,l,k;" if="" int="" l="" mat="" n="" n_____________________________________________________________="" o.="" p.parking="" p.tope--="" p.tope="" p="" placa="" placas:="" posicion="" printf="" s="" strcpy="" struct_pila="" vacio.="" validar_placas="" void="" while="" x="">=7){ printf("\nNo es una Matricula valida\n"); printf("Excede el numero maximo de caracteres para una matricula\n"); printf("Vea el ejemplo de Matricula\n"); return 0; } printf("\nMatricula Valida \n"); return 1; } -->9>
0 comentarios:
Publicar un comentario