Título: programa sobre colas Publicado por: Suzume en 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 Título: Re: programa sobre colas Publicado por: Antarezx en 8 Diciembre 2011, 05:30 am Correlo en borland c++ ya corri este codigo fuente y no menciona ningun problema en este compilador el turbo c marca un error de sintaxis pero estoy utilizando borland, turbo c tienes errores..... ;D
Título: Re: programa sobre colas Publicado por: rir3760 en 8 Diciembre 2011, 17:31 pm Hay varios errores en ese programa.
El primero en la declaracion: Código El alias "nodocola" todavia no existe, deberia ser "struct nodocola *sig;" La variable "z" de la funcion principal no se utiliza, hay que eliminarla. No retornas nada al terminar la funcion "main", al menos deberias retornar cero para indicar una salida normal. El problema principal se encuentra en la funcion que inicializa la cola, esta es: Código Esa funcion lo que hace es modificar el parametro "c" y este es una variable local. Para que tenga efecto debes emular el paso por referencia mediante punteros, como en las otras funciones. No revise lo demas. Corrige eso y nos cuentas. Un saludo |