Dado un vector de números enteros eliminar los valores ceros

Dado un vector de números enteros eliminar los valores ceros, si los tuviere
Sea A=[12,4,0,45,3,0,67,0,1] eliminado se tiene A=[12,4,45,3,67,1]

#include <stdio.h>
#define MAX 100
int a[MAX];
void leer_vector( int a[]){
    int i,n;
    do {
  printf("Ingrese cantidad de elementos menor a 100: ");
  scanf("%d",&n);
 } while( (n<0)||(n>MAX) );
 printf("Ingrese los valores...\n");
 for(i=1;i<=n;i++)
 { printf("A[%d]= ",i);
  scanf("%d",&a[i]);
 }
 a[0]=n;
}
void mostrar_vector( int a[] ){

	int i,n=a[0];
    for(i=1;i<=n;i++)
        printf(" - %d ",a[i]);
}
int eliminar( int a[], int i ){
    int e,k,n=a[0];
    if(i<1 || i>n)
        e=-1;
    else
        if(i==n){
            e=a[n];n--;
        }else{
            e=a[i];
            for(k=i;k<=n-1;k++)
                a[k]=a[k+1];
            n--;
        }
    a[0]=n;
    return e;
}
void busca_y_elimina(int a[]){
    int i,e=0,n=a[0];
    bool sw=false;
    for(i=1;i<=n;i++){
        if(a[i]==e){
            sw=true;
            eliminar(a,i);
            n=a[0];
            i--;
        }
    }
    if(sw==false)
        printf("\nElemento cero=0 no encontrado");
}
int main() {
    printf("\nELIMINA CEROS EN UN VECTOR\n");
 leer_vector(a);
 printf("\nVector original: \n");
 mostrar_vector(a);
    busca_y_elimina(a);
 printf("\nVector sin ceros: \n");
 mostrar_vector(a);
 printf("\n");
 return 0;
}

Comentarios