este programa no tiene errores al compilarlo pero cuando lo corro no funciona alguna sugerencia sobre que es lo q esta mal??
//programa que utiliza colas con memoria dinamica y calcula el promedio de los elementos
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
struct nodocola{
int dato;
nodocola *sig;
};
typedef struct nodocola nodocola;
struct cola{
nodocola *frente , *fin;
};
typedef struct cola cola;
void anadec(cola *,int);
int borrarc(cola *);
void inicializa(cola );
int vacia(cola );
void promedio(cola *);
void mostrarcola(cola *);
void menu(void);
int main(){
int op,ban=1,x,n=1,z;
cola c;
inicializa(c);
printf("\n PROGRAMA QUE UTILIZA COLAS Y CALCULA EL PROMEDIO DE SUS ELEMENTOS ");
menu();
while(ban==1){
do{
printf("\nDigite la opcion a utilizar: ");
scanf("%i",&op);
}while(op<1 || op>6);
if(op==1){
if(n==1){
printf("\n ¿Que dato desea agregar?");
scanf("%i",&x);
anadec(&c,x);
printf("\n otro dato?? si-->1 no-->0" );
scanf("%i",&n);
}
else{
printf("\nDigite la opcion a utilizar: ");
scanf("%i",&op);
}
}
if(op==2){
borrarc(&c);
printf("\n Dato borrado!!!!!!");
}
if(op==3)
promedio(&c);
if(op==4)
mostrarcola(&c);
if(op==5)
ban=0;
}//fin while
//getch();
}//fin main
void anadec(cola *c, int e){
nodocola *a;
a=(nodocola*)malloc(sizeof(nodocola));
a->dato=e;
a->sig=NULL;
if(vacia(*c))
c->frente=a;
else
c->fin->sig=a;
c->fin=a;
} //fin anadec
int borrarc(cola *c){//------------------------------------------
nodocola *a;
int x;
if(!vacia(*c)){
a=c->frente;//--------
x=a->dato;
c->frente=c->frente->sig;
if(c->frente==NULL)
c->fin=NULL;
free(a);
printf("\n numero: %i ",x);//---------
}
else{
puts("Error Eliminacion de una Cola Vacia") ;
exit(-1) ;
}
} // fin borrarc
void inicializa(cola c){
c.frente=NULL;
c.fin=NULL;
} // fin inicializa
int vacia(cola c){
return(c.frente==NULL);
} // fin vacia
void menu(void){
printf("\n Agregar un dato opcion --> 1");
printf("\n Borrar un dato opcion --> 2");
printf("\n Calcular el promedio opcion --> 3");
printf("\n Mostrar los datos --> 4");
printf("\n Salir del programa --> 5");
}
void mostrarcola(cola *c){
/* Muestra los elementos de una cola
que se le pase como parametro */
int e;
nodocola *aux;
aux=c->frente;
while (aux!=NULL){
e=aux->dato;
printf("%d ", e);
aux=aux->sig;
} // while
} // fin mostrar cola
void promedio(cola *c){
int total=0,num=0;
float prom;
nodocola *aux;
aux=c->frente;
while(aux!=NULL){
total=+aux->dato;
num++;
aux=aux->sig;
}//fin while
prom=total/num;
printf("\n El promedio de los datos es: %.2f ",prom);
}// fin promedio