Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: ponchado en 13 Marzo 2017, 00:17 am



Título: colas
Publicado por: ponchado en 13 Marzo 2017, 00:17 am
AYUDA: como le hago para que me pida los valores de la cola, me vaya mostrando los datos agregados y la cola



Código
  1. #include <stdio.h>
  2.  
  3. #define MAX_SIZE 50
  4.  
  5.  
  6. struct tcola
  7. {
  8.  int elems;
  9.  int entrada, salida;
  10.  int elementos[MAX_SIZE];
  11. };
  12.  
  13.  
  14. //Creación:
  15.  
  16. void crear(struct tcola *cola)
  17. {
  18.  cola->elems = cola->salida = cola->entrada = 0;
  19. }
  20.  
  21. //Función que devuelve verdadero si la cola está vacía:
  22.  
  23. int vacia(struct tcola *cola)
  24. {
  25.  return (cola->elems == 0);
  26. }
  27.  
  28. //Función que devuelve verdadero si la cola está llena:
  29.  
  30. int llena(struct tcola *cola)
  31. {
  32.  return (cola->elems == MAX_SIZE);
  33. }
  34.  
  35. //Encolado:
  36.  
  37. void encolar(struct tcola *cola, int elem)
  38. {
  39.  cola->elems++;
  40.  cola->elementos[cola->entrada++] = elem;
  41.  if (cola->entrada == MAX_SIZE)
  42.    cola->entrada = 0;
  43. }
  44.  
  45. //Desencolado:
  46.  
  47. void desencolar(struct tcola *cola, int *elem)
  48. {
  49.  cola->elems--;
  50.  *elem = cola->elementos[cola->salida++];
  51.  if (cola->salida == MAX_SIZE)
  52.    cola->salida = 0;
  53. }
  54.  
  55.  
  56.  
  57. int main(void)
  58. {
  59.  struct tcola cola;
  60.  int elem;
  61.  
  62.  crear(&cola);
  63.  if (vacia(&cola)) printf("\nCola vacia.");
  64.  if (llena(&cola)) printf("\nCola llena.");
  65.  encolar(&cola, 1);
  66.  desencolar(&cola, &elem);
  67.  return 0;
  68. }


· Los códigos deben ir en etiquetas GeSHi
>aquí las reglas del foro (http://foro.elhacker.net/reglas.htm)
-Engel Lex


Título: Re: colas
Publicado por: Kenji-chan en 13 Marzo 2017, 01:10 am
supongo que el elemento a encolar es el int elem; que se encuera en la función main()
lo que tienes que hacer es pedir el dato del elemento antes de llamar a la funcion encolar(struct tcola *cola, int elem) pero recuerda que para encolar un elemento simpre tiene que ir al fina de la cola pero si la cola esta vacía lo colocas en la cabeza y ya pero en la linea 40 cola->elementos[cola->entrada++] = elem; te estas saltando la caveza de tu cola, y para desencolar simpre lo haremos con la caveza operamos y luego la eliminamos pero tu lo único que haces es reducir el valor de la variable que contiene el tamaño de la cola


Título: Re: colas
Publicado por: ponchado en 13 Marzo 2017, 01:41 am
me ayudas a corregirlo, lo he intendo por horas y no puedo


Título: Re: colas
Publicado por: Kenji-chan en 13 Marzo 2017, 01:51 am
sabes lo que es la memoria dinámica??


Título: Re: colas
Publicado por: ponchado en 13 Marzo 2017, 02:20 am
si, si se que es, tengo que definir, no se por ejemplo el tamaño que me reserva en la memoria para la cola?


Título: Re: colas
Publicado por: Kenji-chan en 13 Marzo 2017, 03:10 am
entonces te paso unos vídeos que enseñan a hacer colas

colas teoria
https://www.youtube.com/watch?v=6i2f6k5PPjs&index=5&list=PLTd5ehIj0goMTSK7RRAPBF4wP-Nj5DRvT

colas implementacion
https://www.youtube.com/watch?v=nicbZo7sI_w&index=6&list=PLTd5ehIj0goMTSK7RRAPBF4wP-Nj5DRvT


Título: Re: colas
Publicado por: ponchado en 13 Marzo 2017, 03:38 am
es que el programa ya es para mañana :(