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

Urgente C-vector de caracteres por referencia

Estas en el tema de Urgente C-vector de caracteres por referencia en el foro de C/C++ en Foros del Web. Hola: tengo la siguiente duda: necesito ordenar un vector de caracteres que contiene nombres, definido de la siguiente manera(en C): char nom[3][30] ={Maria, Leandro, Juan}; ...
  #1 (permalink)  
Antiguo 14/10/2009, 23:25
 
Fecha de Ingreso: septiembre-2009
Mensajes: 4
Antigüedad: 14 años, 7 meses
Puntos: 0
Urgente C-vector de caracteres por referencia

Hola:

tengo la siguiente duda: necesito ordenar un vector de caracteres que contiene nombres, definido de la siguiente manera(en C):

char nom[3][30] ={Maria, Leandro, Juan};

lo estoy pasando como parametro en una funcion, asi:

funcion(char nom[][30])
{
.............
for (j=0;j<30;j++)
{
nom[pos_max][j] = nom[faux][j];
}
for (j=0;j<30;j++)
{
nom[faux][j] = nmax[j];
}
...........
}
y dentro de esta lo tengo que orden junto con otros vectores mas, con lo cual necesito hacer intercambios de valores en las posiciones del vector. Mi duda es que si bien logre ordenar el vector, al pasarlo por referencia no quiero que se modifique el contenido del mismo al salir de la funcion. Sin embargo, se esta alterando dicho vector.

No se si estoy pasando mal el parametro por referencia o tiene que ver con la forma con la que estoy trabajando el vector.

Por favor si me pueden ayudar se los agradezco ya que lo tengo q entregar para un tp.
  #2 (permalink)  
Antiguo 15/10/2009, 04:08
Avatar de r0d
r0d
 
Fecha de Ingreso: noviembre-2007
Mensajes: 86
Antigüedad: 16 años, 5 meses
Puntos: 3
Respuesta: Urgente C-vector de caracteres por referencia

Hola,

no estoy seguro entender bien tu problema, pero creo que una solucion que puede valer consiste en hacer una copia del vector (el que esta pasado en parametro de tu funcion) al principio de la funcion, y utilisar esta copia.
__________________
Alicia: Sólo quiero saber que camino debo tomar.
Gato risón: Pues... depende mucho de donde quieras ir.

Mi página web
  #3 (permalink)  
Antiguo 15/10/2009, 07:01
 
Fecha de Ingreso: septiembre-2009
Mensajes: 4
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Urgente C-vector de caracteres por referencia

Hola. Si, yo pense en esa solucion pasa que me piden usar pasaje por valor y por referencia en todas las funciones que hice. Creo que esta funcion seria un forma de pasaje por referencia pero no se porque no me funciona.

Gracias!

Saludos
  #4 (permalink)  
Antiguo 15/10/2009, 09:46
Avatar de r0d
r0d
 
Fecha de Ingreso: noviembre-2007
Mensajes: 86
Antigüedad: 16 años, 5 meses
Puntos: 3
Respuesta: Urgente C-vector de caracteres por referencia

Lo que haces aqui es un pasaje por puntero, porque la verdad es que char nom[][30] es un puntero.

No creo que se puede pasar un array por referencia direcamente, hay que pasar por una clase/structura:
Código:
struct MyArray
{
   char[10][20] array;
};

void function ( MyArray & myArray ) // eso es un pasaje por referencia
{
  myArray.array[pos_max][j] = myArray[faux][j];
//...
}
Pero pasar un objeto por referencia es mas o menos la misma cosa que por puntero, en el sentido que si modificas la variable en la funcion, los cambios van a quedar por siempre.

Para que no se altere el vector, no hay otra manera que hacer una copia (si no haces una copia, vas a trabajar siempre en la misma zona de memoria). Y cuando se pasa un parametro por valor, hay una copia "escondida" que se hace:
Código:
void function ( MyArray & myArray ) // eso es un pasage por valor
{
/// codigo, lo que sea;
}

main()
{
   MyArray myArray; // declaracion de un objeto de tipo MyArray
   function( myArray ); // aqui, antes de llamar a function, el compilador hace una copia de myArray, y es esta copia que esta utilizada en la funcion, de manera que el objeto initial no sera alterado
}
Eso es con un objeto/estructura, pero no se como se hace directamente con un "C-style array". Este tipo de array no se usa todavia en c++.
__________________
Alicia: Sólo quiero saber que camino debo tomar.
Gato risón: Pues... depende mucho de donde quieras ir.

Mi página web
  #5 (permalink)  
Antiguo 15/10/2009, 09:52
Avatar de r0d
r0d
 
Fecha de Ingreso: noviembre-2007
Mensajes: 86
Antigüedad: 16 años, 5 meses
Puntos: 3
Respuesta: Urgente C-vector de caracteres por referencia

Ha, una cosa que acabo de ver:
en tu primero mensage, dices que es un problema de C. Y luego hablas de pasaje por referencia. Pero el pasage por referencia no existe en C, es solo en C++. Asi que hay algo que tienes que clarificar...
__________________
Alicia: Sólo quiero saber que camino debo tomar.
Gato risón: Pues... depende mucho de donde quieras ir.

Mi página web
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 18:04.