Codigo C Ejemplo de pilas (Estacionamiento)




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;
}
Share on Google Plus
    Blogger Comment

0 comentarios:

Publicar un comentario