Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - Suzume

#1
Programación C/C++ / programa sobre colas
25 Junio 2011, 00:14 AM
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