elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Ingresar Registrarse
11 Octubre 2008, 17:49  



+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++
| | |-+  Uso de vectores de colas.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Imprimir
Autor Tema: Uso de vectores de colas.  (Leído 384 veces)
Gorky

Desconectado Desconectado

Mensajes: 677



Ver Perfil
Uso de vectores de colas.
« en: 13 Abril 2008, 13:51 »

Buenas foreros. Estoy trabajando con pilas, listas y colas y sin problema. Hasta ahora estaba usando punteros para el uso de las colas. Sin embargo ahora se me pide usar un vector de punteros para tener 5 colas.
Necesito enviar el vector de las 5 colas y lo estoy haciendo asi:
Código
void InsertarProceso(pCola *primero[],pCola *ultimo[])
aunque no se si sera correcto.

Dentro de esa funcion llamo a la funcion propia de añadir un nodo de la siguiente forma:
Código
Anadir(primero[i], ultimo[i], valor);

Pero no se como seria la llamada a la funcion InsertarProceso. Espero me podais ayudar. Muchas gracias por cualquier colaboracion.

Nota: El post ya ha sido corregido.
« Última modificación: 13 Abril 2008, 15:22 por Gorky » En línea

"El Hacker no nace Hacker, sino con la curiosidad bajo el brazo, luego se hace Hacker, cuando aprovecha esa sed de conocimientos y habilidad innata para aplicarlos y estudia, aprende, aplica y crea."
Flakito81

Desconectado Desconectado

Mensajes: 350



Ver Perfil
Re: Uso de vectores de colas.
« Respuesta #1 en: 13 Abril 2008, 15:08 »

Le tendrías que pasar las posiciones a los diferentes arrays de punteros a pCola.

Anadir (&primero[0], &ultimo[0], 20); <-- le he añadido el valor a insertar
Quizas te interese usar macros del tipo #define COLA_1 0
Anadir(&primero[COLA_1], &ultimo[COLA_1], 20);

Un saludo!
En línea
Gorky

Desconectado Desconectado

Mensajes: 677



Ver Perfil
Re: Uso de vectores de colas.
« Respuesta #2 en: 13 Abril 2008, 15:15 »

Claro es que lo que he puesto antes esta mal.
En realidad tengo el siguiente prototipo:
Código
void InsertarProceso(pCola *primero[],pCola *ultimo[]);
con el que quiero que se envie el vector y dentro llamo asi a la funcion:
Código
Anadir(primero[i],ultimo[i], valor);

El problema lo tengo al querer llamar a la funcion InsertarProceso.
En línea

"El Hacker no nace Hacker, sino con la curiosidad bajo el brazo, luego se hace Hacker, cuando aprovecha esa sed de conocimientos y habilidad innata para aplicarlos y estudia, aprende, aplica y crea."
Flakito81

Desconectado Desconectado

Mensajes: 350



Ver Perfil
Re: Uso de vectores de colas.
« Respuesta #3 en: 13 Abril 2008, 15:27 »

Pega algo mas de código y los errores. Tal cual es el prototipo la llamada debería ser
Código
InsertarProceso(&primero[0],&ultimo[0]);
 

PD: en la llamada a Anadir dentro de la funcion insertarProceso sería igual que cuando trabajabas con una unica lista, no tienes q pasar indices
« Última modificación: 13 Abril 2008, 15:29 por Flakito81 » En línea
Gorky

Desconectado Desconectado

Mensajes: 677



Ver Perfil
Re: Uso de vectores de colas.
« Respuesta #4 en: 13 Abril 2008, 15:34 »

Pega algo mas de código y los errores. Tal cual es el prototipo la llamada debería ser
Código
InsertarProceso(&primero[0],&ultimo[0]);
 

PD: en la llamada a Anadir dentro de la funcion insertarProceso sería igual que cuando trabajabas con una unica lista, no tienes q pasar indices

Creo que lo has entendido al contrario. La funcion de InsertarProceso debe recibir el vector de colas y la funcion Anadir (llamada desde InsertarProceso) debe recibir la cola y el valor que se va a añadir. Por lo tanto InsertarProceso no lleva indices y Anadir si.
En línea

"El Hacker no nace Hacker, sino con la curiosidad bajo el brazo, luego se hace Hacker, cuando aprovecha esa sed de conocimientos y habilidad innata para aplicarlos y estudia, aprende, aplica y crea."
ҒrεακΠιи∂

Desconectado Desconectado

Mensajes: 121



Ver Perfil
Re: Uso de vectores de colas.
« Respuesta #5 en: 13 Abril 2008, 15:37 »

Buenas

Primero que nada yo lo que haria seria una estructura con la cabeza y la cola de la cola.Asi el paso de argumentos te queda mas "prolijos".
Tambien cambie el tipo de retorno. Esto te va a permitir controlar en caso de que la funcion falle.

Con respecto a tu problema, fijate en el code que te dejo aca abajo.Contiene todas las sugerencias que mencione

Código
/* headers que necesites */
 
typedef struct node{
     int               info;
     struct node  *next;
}node_t;
 
typedef struct queue{
     node_t       *head;
     node_t       *tail;
}queue_t;
 
/* Demas structs */
 
int  add(queue_t *queue, int info);
/* Otras funciones */
 
 
int main(void){
   queue_t          queues[NUM];
   /* Las demas variables locales */
 
   /* Inicializacion  de las colas*/
 
   /* queues es un puntero por ser un vector.
    * Al sumarle i te da un puntero a la i-esima queue del vector
    */

   if(add(queues + i, info)){
       perror("add");
       exit(EXIT_FAILURE);
   }  
 
   /* Demas operaciones que tengas que hacer */
 
   exit(EXIT_SUCCESS);
}
 

Saludos, FreakMind
En línea

Connoisseurs of C semantics find C++ inferior to ++C
Gorky

Desconectado Desconectado

Mensajes: 677



Ver Perfil
Re: Uso de vectores de colas.
« Respuesta #6 en: 13 Abril 2008, 15:44 »

ҒrƒÃƒ¿ƒÈƒ®ƒÇ„yÝ, entiendo perfectamente el codigo que me pasas pero esa no es mi situacion. En tu codigo hay un vector de punteros y vas llamando a la funcion ADD desde el main, pasandole como argumento cada uno de los elementos del vector. Sin embargo mi caso no es ese. Yo tengo una funcion que recibe el vector completo y dentro de esta funcion se llama a la funcion ADD, ya si pasandole cada elemento del vector.
Espero haberme explicado.
En línea

"El Hacker no nace Hacker, sino con la curiosidad bajo el brazo, luego se hace Hacker, cuando aprovecha esa sed de conocimientos y habilidad innata para aplicarlos y estudia, aprende, aplica y crea."
ҒrεακΠιи∂

Desconectado Desconectado

Mensajes: 121



Ver Perfil
Re: Uso de vectores de colas.
« Respuesta #7 en: 13 Abril 2008, 15:47 »

ҒrƒÃƒ¿ƒÈƒ®ƒÇ„yÝ, entiendo perfectamente el codigo que me pasas pero esa no es mi situacion. En tu codigo hay un vector de punteros y vas llamando a la funcion ADD desde el main, pasandole como argumento cada uno de los elementos del vector. Sin embargo mi caso no es ese. Yo tengo una funcion que recibe el vector completo y dentro de esta funcion se llama a la funcion ADD, ya si pasandole cada elemento del vector.
Espero haberme explicado.
Es lo mismo nada mas que haces un nivel mas de llamada. Si no te funciona agregale el & adelante de queues, y listo


Saludos, FreakMind
En línea

Connoisseurs of C semantics find C++ inferior to ++C
Gorky

Desconectado Desconectado

Mensajes: 677



Ver Perfil
Re: Uso de vectores de colas.
« Respuesta #8 en: 13 Abril 2008, 15:51 »

Asi es como estoy intentando llamarlo:
Código
InsertarProceso(&primero,&ultimo);

Pero me dice:
Código:
passing arg 1 of `InsertarProceso' from incompatible pointer type
passing arg 2 of `InsertarProceso' from incompatible pointer type
En línea

"El Hacker no nace Hacker, sino con la curiosidad bajo el brazo, luego se hace Hacker, cuando aprovecha esa sed de conocimientos y habilidad innata para aplicarlos y estudia, aprende, aplica y crea."
Flakito81

Desconectado Desconectado

Mensajes: 350



Ver Perfil
Re: Uso de vectores de colas.
« Respuesta #9 en: 13 Abril 2008, 16:02 »

Código
#include <stdio.h>
 
#define NUM 6
 
typedef struct pCola
{
      int valor;
      struct pCola *next;
}pCola;
 
void Anadir(pCola **primero, pCola **ultimo, int valor)
{
   //codigo
}
 
void InsertarProceso(pCola **primero, pCola **ultimo)
{
    //-- codigo ---
    Anadir (&primero[0], &ultimo[0], 20);
    //-- resto del codigo ---
}
 
 
 
int main ()
{
   pCola *primero[NUM];
   pCola *ultimo[NUM];
 
   InsertarProceso(primero, ultimo);
 
   return 0;
}
 
Suerte!
En línea
Gorky

Desconectado Desconectado

Mensajes: 677



Ver Perfil
Re: Uso de vectores de colas.
« Respuesta #10 en: 13 Abril 2008, 16:38 »

Si no me equivoco, la funcino Anadir no tendria ese prototipo sino este:
Código
void Anadir(pCola *primero, pCola *ultimo, int valor);

ya que lo que recibe son dos punteros y no dos vectores de punteros.

Al intentar llamar a InsertarProceso tal y como tu lo haces sigue dando el mismo error:
Código:
passing arg 1 of `InsertarProceso' from incompatible pointer type
passing arg 2 of `InsertarProceso' from incompatible pointer type
En línea

"El Hacker no nace Hacker, sino con la curiosidad bajo el brazo, luego se hace Hacker, cuando aprovecha esa sed de conocimientos y habilidad innata para aplicarlos y estudia, aprende, aplica y crea."
Flakito81

Desconectado Desconectado

Mensajes: 350



Ver Perfil
Re: Uso de vectores de colas.
« Respuesta #11 en: 13 Abril 2008, 17:18 »

Pues le kitas el ampersand, asi de simple.

Código
#include <stdio.h>
 
#define NUM 6
 
typedef struct pCola
{
      int valor;
      struct pCola *next;
}pCola;
 
void Anadir(pCola *primero, pCola *ultimo, int valor)
{
   //codigo
}
 
void InsertarProceso(pCola **primero, pCola **ultimo)
{
    //-- codigo ---
    Anadir (primero[0], ultimo[0], 20);
    //-- resto del codigo ---
}
 
 
 
int main ()
{
   pCola *primero[NUM];
   pCola *ultimo[NUM];
 
   InsertarProceso(primero, ultimo);
 
   return 0;
}
 
 
Suerte!

PD: El codigo está compilado, asi que no da errores!
En línea
Leber

Desconectado Desconectado

Mensajes: 261

"Las estrellas se apagan..."


Ver Perfil
Re: Uso de vectores de colas.
« Respuesta #12 en: 16 Abril 2008, 19:54 »

Si la estructurava a sufrir modificaciones, no seria mejor pasarlo por rerefencia?

con el &?

Es solo una duda, saludos
En línea

"Solo los tontos carecen de preucupaciones." Johann Wolfgang Goethe
ҒrεακΠιи∂

Desconectado Desconectado

Mensajes: 121



Ver Perfil
Re: Uso de vectores de colas.
« Respuesta #13 en: 16 Abril 2008, 22:09 »

Buenas

Si la estructurava a sufrir modificaciones, no seria mejor pasarlo por rerefencia?

con el &?

Es solo una duda, saludos
Depende de lo que quieras hacer. Si queres modificar un valor de alguna posicion del vector nada mas puede que no necesites, pero si queres agrandar el vector por ejemplo, seguramente necesitaras el & porque eso implica tener que modificar al vector y no a datos contenidos en las posiciones.


Nose si me explique bien jeje


Saludos, FreakMind
En línea

Connoisseurs of C semantics find C++ inferior to ++C
Páginas: [1] Ir Arriba Imprimir 
Ir a:  







Consolas     La Web de Goku     MilW0rm     MundoDivx

Hispabyte     Truzone     TodoReviews     ZonaPhotoshop

hard-h2o modding    Foros de ayuda    Yashira.org    Videojuegos    indetectables.net   

Noticias Informatica    Seguridad Informática    ADSL    Foros en español    eNYe Sec

Todas las webs afiliadas están libres de publicidad engañosa.

Powered by SMF 1.1.6 | SMF © 2006-2008, Simple Machines LLC
Free counter and web stats