Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Javier_Fig en 22 Septiembre 2015, 15:23 pm



Título: Pasar solo una columna de una matriz como argumento de una funcion
Publicado por: Javier_Fig en 22 Septiembre 2015, 15:23 pm
El título lo dice todo, tengo una función que toma como argumento un vector columna y quiero pasarle como argumento solo una columna de una matriz (para hacer un for que recorra las columnas y vaya llamando a la función para cada una de ellas).

Quiero pasarle solo una columna y estoy seguro de que puede hacerse aunque obviamente no recuerdo como xD

Agradezco a quien pueda ayudarme


Título: Re: Pasar solo una columna de una matriz como argumento de una funcion
Publicado por: A.I. en 22 Septiembre 2015, 16:03 pm
Puedes hacer una copia de la columna en un vector, o mejor, pasarle un puntero del elemento inicial de la columna.
Ej con matriz bidimensional:
Primera columna -> puntero a A[0][0], haces el for para el número de columnas y el incremento que sea del número de elementos por fila.

Segunda columna puntero a A[0][1]... etc


Título: Re: Pasar solo una columna de una matriz como argumento de una funcion
Publicado por: Javier_Fig en 22 Septiembre 2015, 17:16 pm
Puedes hacer una copia de la columna en un vector, o mejor, pasarle un puntero del elemento inicial de la columna.
Ej con matriz bidimensional:
Primera columna -> puntero a A[0][0], haces el for para el número de columnas y el incremento que sea del número de elementos por fila.

Segunda columna puntero a A[0][1]... etc

Estoy haciendo una copia en un vector, pero es precisamente lo que quiero evitar, mi interés en pasarle directamente la matriz pero que me tome la columna que le indique.

Estaba seguro que se podía hacer, aunque quizás ya estoy confundiendo lenguajes xd


Título: Re: Pasar solo una columna de una matriz como argumento de una funcion
Publicado por: engel lex en 22 Septiembre 2015, 17:37 pm
Si por columna te refieres a los elementos del segundo nivel del array, ej a[0][0], a[0][1], a[0][2], etc

Lo que podrias hacer es pasar como argumento el primer nivel, es decir a[0], a[1]... Etc

No se si me di a entender


Título: Re: Pasar solo una columna de una matriz como argumento de una funcion
Publicado por: A.I. en 22 Septiembre 2015, 18:24 pm
Estoy haciendo una copia en un vector, pero es precisamente lo que quiero evitar, mi interés en pasarle directamente la matriz pero que me tome la columna que le indique.

Estaba seguro que se podía hacer, aunque quizás ya estoy confundiendo lenguajes xd

Se puede, exactamente como te dije en mi respuesta anterior.

A la función le pasas un puntero al primer elemento de la columna (o  a la matriz según te interese) y ahí haces los incrementos según las dimensiones.

Ejemplifico

le pasas el puntero a la columna, si quieres recorrer los elementos de la columna c,  para recorrerla le vas sumando el número de elementos que tiene una fila, supongamos f. por lo tanto.

puntero_a_columna (que sería equivalente a &A[0][c]) <- dirección del primer elemento de la clomna c
puntero_a_columna + f  <- dirección de memoria del segundo elemento...

Puedes controlar no salirte de la matriz con el número de columnas o un poco más laborioso con el número de elementos de la matriz.

También podrías hacer, si pasas el puntero a la matriz completa
A[i ][c] e ir incrementando la i, todo depende de como te venga mejor para lo que quieras hacer