Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Duda

Estas en el tema de Duda en el foro de C/C++ en Foros del Web. Hola. Probablemente el problema que tengo es de sintaxis, pero no le encuentro solución. En la función main yo declaro dos matrices de estructuras (color_new ...
  #1 (permalink)  
Antiguo 25/08/2009, 06:15
 
Fecha de Ingreso: julio-2008
Mensajes: 25
Antigüedad: 15 años, 9 meses
Puntos: 0
Duda

Hola. Probablemente el problema que tengo es de sintaxis, pero no le encuentro solución. En la función main yo declaro dos matrices de estructuras (color_new y color_old). Necesito que la función auxiliar trabaje con dichas matrices. Lo que yo he hecho está abajo, pero me da el siguiente error: "warning: passing arg 1 of `comparar_imagen' from incompatible pointer type" y no entiendo por qué.
¿Alguien me puede ayudar?
Un saludo y gracias.

struct pixel
{
int r;
int g;
int b;
};

/* FUNCIÓN AUXILIAR */

int comparar_imagen(struct pixel *color_old, struct pixel *color_new, short int *columna_color, int contar_pasos)
{
(...)
if(color_old[j][i].r != color_new[j][i].r)
(...)
return encontrar_presa;
}

int main(int argc, char *argv[])
{

/* declaraciones de variables */
struct pixel color_old[IMAGE_HEIGHT][IMAGE_WIDHT];
struct pixel color_new[IMAGE_HEIGHT][IMAGE_WIDHT];
(...)

/* Llamada a la función */
comparar_imagen(color_old, color_new, columna_color, contar_pasos);
(...)
}

Última edición por nahrein; 25/08/2009 a las 09:52
  #2 (permalink)  
Antiguo 25/08/2009, 09:45
Avatar de Anubis_Slash  
Fecha de Ingreso: mayo-2009
Ubicación: aqui y haya
Mensajes: 173
Antigüedad: 15 años
Puntos: 5
Respuesta: Duda

ponlo de la siguiente forma:

int comparar_imagen(struct pixel **color_old, struct pixel **color_new, short int *columna_color, int contar_pasos)

para que entiendas un poco mas te recomiendo este link

http://www.zator.com/Cpp/E4_3_6.htm
__________________
Bienvenidos los karmas.
Quejas, sugerencias o dudas, se awantan......
  #3 (permalink)  
Antiguo 25/08/2009, 13:19
 
Fecha de Ingreso: julio-2008
Mensajes: 25
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Duda

Pues ha sido peor el remedio que la enfermedad
Ahora el programa se compila, pero me da el mismo warning y durante la ejecución el programa da error y se cierra.
La solución que me propusiste era cambiar el puntero a estructura pixel por un puntero a puntero a estructura pixel, ¿no?
Un saludo.
  #4 (permalink)  
Antiguo 25/08/2009, 13:30
Avatar de Anubis_Slash  
Fecha de Ingreso: mayo-2009
Ubicación: aqui y haya
Mensajes: 173
Antigüedad: 15 años
Puntos: 5
Respuesta: Duda

efectivamente esa era la solucion que proponia

deja pienso un poco mas y veo si se me ocurre alguna otra cosa

saludos
__________________
Bienvenidos los karmas.
Quejas, sugerencias o dudas, se awantan......
  #5 (permalink)  
Antiguo 26/08/2009, 07:03
 
Fecha de Ingreso: agosto-2009
Mensajes: 18
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Duda

Ya que le envias un puntero creo que deberias probar con usar la sintaxis
VARIABLE DE LA ESTRUCTURA con este operador -> y luego el campo...

if(color_old[j][i]->r != color_new[j][i]->r)

Prueba de esa manera en tu funcion comparar_imagen
  #6 (permalink)  
Antiguo 26/08/2009, 08:57
 
Fecha de Ingreso: julio-2008
Mensajes: 25
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Duda

Tampoco funciona, me pone lo siguiente: error: invalid type argument of `->'.
¿Cual se supone que es la sintaxis correcta para referirse al puntero de una matriz de estructuras?
Un saludo.
  #7 (permalink)  
Antiguo 27/08/2009, 06:53
 
Fecha de Ingreso: agosto-2009
Mensajes: 18
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Duda

cuando te dije que usaras el '->' tienes que mandarle a la funcion comparar_imagen de la forma que te dijo Anubis, entiendes?? con un doble puntero o sino de esta forma

comparar_imagen(struct pixel color_old[][IMAGE_WIDHT], struct pixel color_new[][IMAGE_WIDHT], short int *columna_color, int contar_pasos)

que deberia de ser lo mismo que el doble puntero..
  #8 (permalink)  
Antiguo 28/08/2009, 03:16
 
Fecha de Ingreso: julio-2008
Mensajes: 25
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Duda

Usando el doble puntero y el operador -> no me funciona, pero de la otra forma que me has dicho sí. ¿Alguien me puede explicar por qué o qué es lo que estamos haciendo? El problema ya está resuelto, pero quiero saber por qué.
Un saludo y gracias.
  #9 (permalink)  
Antiguo 28/08/2009, 08:18
 
Fecha de Ingreso: agosto-2009
Mensajes: 18
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Duda

Bueno, el operador '. (punto)' sirve para ingresar al campo de una estructura, en este caso la variable es una matriz entonces se pone el nombre de la matriz seguido del punto y el campo de la estructura, pero cuando el campo de la estructura es un puntero a algo, entonces en vez de usar el punto se usa el operador flecha '->', entiendes??
Cualquier duda me lo dices...
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:33.