elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Pasar solo una columna de una matriz como argumento de una funcion
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Pasar solo una columna de una matriz como argumento de una funcion  (Leído 3,229 veces)
Javier_Fig

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Pasar solo una columna de una matriz como argumento de una funcion
« 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


En línea

A.I.

Desconectado Desconectado

Mensajes: 61


Ver Perfil
Re: Pasar solo una columna de una matriz como argumento de una funcion
« Respuesta #1 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


En línea

Javier_Fig

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Re: Pasar solo una columna de una matriz como argumento de una funcion
« Respuesta #2 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
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Pasar solo una columna de una matriz como argumento de una funcion
« Respuesta #3 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
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
A.I.

Desconectado Desconectado

Mensajes: 61


Ver Perfil
Re: Pasar solo una columna de una matriz como argumento de una funcion
« Respuesta #4 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
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines