elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
29 Mayo 2012, 02:59  


Tema destacado: Nueva página de elhacker.net en Google+ Google+

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse)
| | |-+  programa sobre colas
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: programa sobre colas  (Leído 1,636 veces)
Suzume

Desconectado Desconectado

Mensajes: 3



Ver Perfil
programa sobre colas
« en: 25 Junio 2011, 00:14 »

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



En línea
Antarezx

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: programa sobre colas
« Respuesta #1 en: 8 Diciembre 2011, 05:30 »

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


En línea
rir3760


Desconectado Desconectado

Mensajes: 382


Ver Perfil
Re: programa sobre colas
« Respuesta #2 en: 8 Diciembre 2011, 17:31 »

Hay varios errores en ese programa.

El primero en la declaracion:
Código
struct nodocola {
  int dato;
  nodocola *sig; /* <== */
};
typedef struct nodocola nodocola;
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
void inicializa (cola c)
{
  c.frente = NULL;
  c.fin = NULL;
} // fin inicializa
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
En línea

The capacity to learn is a gift;
The ability to learn is a skill;
The willingness to learn is a choice.
--
Rebec of Ginaz
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Duda - Colas
Programación C/C++
h0oke 0 431 Último mensaje 18 Octubre 2009, 14:24
por h0oke
colas simples
Programación C/C++
nevfuck 2 2,384 Último mensaje 2 Octubre 2010, 13:28
por Gerik
Ayuda con colas en C++
Programación C/C++
edgar_areyes 0 1,730 Último mensaje 28 Noviembre 2010, 05:42
por edgar_areyes
Pilas y Colas
Java
Shell Root 2 2,097 Último mensaje 13 Mayo 2011, 22:35
por ShotgunLogic
ayuda en colas
Programación C/C++
josue_tux 0 468 Último mensaje 25 Mayo 2011, 00:08
por josue_tux
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines