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

funcion con uso de array y size

Estas en el tema de funcion con uso de array y size en el foro de C/C++ en Foros del Web. Hola chicos, resulta que quise hacer algo con un array usando una funcion y no me resulto... aca un ejemplo de lo que no me ...
  #1 (permalink)  
Antiguo 22/02/2012, 20:58
 
Fecha de Ingreso: julio-2010
Mensajes: 126
Antigüedad: 13 años, 9 meses
Puntos: 5
funcion con uso de array y size

Hola chicos, resulta que quise hacer algo con un array usando una funcion y no me resulto... aca un ejemplo de lo que no me sale:

Código C++:
Ver original
  1. int main()
  2. {
  3.     funcion(var[10])
  4. }
  5.  
  6. void funcion(int variable[])
  7. {
  8.     int valor = size(variable);
  9.  
  10.     cout << valor;
  11. }

Que es lo que esta mal aca? me tira error en la linea donde uso size.

Gracias de antemano.
  #2 (permalink)  
Antiguo 23/02/2012, 05:23
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: funcion con uso de array y size

la variable size no existe. creo que estas buscando usar sizeof pero igualmente no teva a servir para lo que imagino que estas buscando.

Ademas tienes problemas de tipos supongo. La funcion toma un array de enteros pero cuando la invocas parece que estas pasandole un entero var[10] (si es que asi esta definida int var[10])
  #3 (permalink)  
Antiguo 23/02/2012, 10:01
 
Fecha de Ingreso: julio-2010
Mensajes: 126
Antigüedad: 13 años, 9 meses
Puntos: 5
Respuesta: funcion con uso de array y size

Como que no existe? No es este? http://www.cplusplus.com/reference/stl/vector/size/

Y el sizeof por lo que se, me serviria en el caso de que var[10] sea char, ya que devuelve el valor en bytes y cada caracter equivale 1 byte, por ende me devolveria el numero de celdas correcto que es lo que necesito yo. Pero no es el caso... lo que yo quiero es saber el numero de celdas que contiene un array, dentro de la funcion... como haria?

Ah, si... tenes razon, use mal el int en el parametro de la funcion... pasa que en este caso no sabia bien que tipo usar... por casualidad se puede hacer algo como esto?

void funcion(void variable[]) ?

Gracias de antemano.
  #4 (permalink)  
Antiguo 23/02/2012, 10:33
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: funcion con uso de array y size

El que tu usas es un metodo de la clase vector. Vos aca lo usas como si fuese una funcion... y no lo es.

Lo que quieres hacer es imposible sin llevar un contador aparte. Asi no mas es imposible saber cuanto ocupa porque no se marca con delimitaciones los array.
  #5 (permalink)  
Antiguo 23/02/2012, 11:20
 
Fecha de Ingreso: julio-2010
Mensajes: 126
Antigüedad: 13 años, 9 meses
Puntos: 5
Respuesta: funcion con uso de array y size

Siendo sincero no te entendi xd, la verdad es que hace poco empece con este lenguaje... pero acaso no existe ninguna funcion para obtener la cantidad de celdas de un array? Y en el caso de que exista, no hay forma de obtenerla luego de pasar dicho array por una funcion que uno crea?

Me refiero a:

Código C++:
Ver original
  1. int var[10]
  2.  
  3. int celdas = obtenercantidaddeceldas(var) // que daria como resultado 10

Pero en vez de hacerlo asi, hacerlo de la siguiente forma:

Código C++:
Ver original
  1. int var[10]
  2.  
  3. funcion(var[10])
  4.  
  5. int funcion(void var[])
  6. {
  7.     int celdas = obtenercantidaddeceldas(var) // que daria como resultado 10
  8. }

Cabe aclarar que puse obtenercantidaddeceldas porque no se que funcion se usa para ello.
  #6 (permalink)  
Antiguo 23/02/2012, 13:21
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: funcion con uso de array y size

Esa funcion no existe. El manejo de memoria es responsabilidad del programador como tambien saber cuanta memoria usar.

Tu puedes declarar una variable asi:
int v[10];

Y posiblemente si haces esto no te de errror: v[15] = 1;

Pero seguramente acabas de pisar algo importante.

C/C++ no hace ningun chequeo de memoria ni de acceso. Para el es todo lo mismo al hacer

v[15] = 1;

Lo unico uqe hace es una cuenta: A la posicion "v" le suma 15 lugares y ahi pone un 1 eso solo hace.
  #7 (permalink)  
Antiguo 23/02/2012, 15:19
 
Fecha de Ingreso: julio-2010
Mensajes: 126
Antigüedad: 13 años, 9 meses
Puntos: 5
Respuesta: funcion con uso de array y size

Perdon pero realmente no entendi casi nada, no entiendo que tiene que ver la memoria en todo esto, recorda que es algo nuevo para mi.

De todas formas creo que vos me estas hablando de algo diferente a mi duda expuesta. Digo no entiendo porque el ejemplo de v[15] = 1, no entiendo la conexion entre eso con lo que puse, si yo no quiero asignarle un valor... yo lo unico que quiero saber es como puedo obtener lo que esta entre corchetes. Realmente ESO no se puede? :S
  #8 (permalink)  
Antiguo 23/02/2012, 16:25
 
Fecha de Ingreso: julio-2010
Mensajes: 126
Antigüedad: 13 años, 9 meses
Puntos: 5
Respuesta: funcion con uso de array y size

Bueno, digamos que resolvi de alguna forma el hecho de obtener el tamaño del array, pero ahora tengo un problema con los tipos, que si no me equivoco el problema en mi caso tiene que ver con el struct, aca dejo el codigo:

Código C++:
Ver original
  1. #include <iostream>
  2.  
  3. #define length(a) ( sizeof ( a ) / sizeof ( a[0] ) )
  4.  
  5. using namespace std;
  6.  
  7. struct Perfil
  8. {
  9.     char Nombre[15];
  10.     char Apellido[15];
  11.     char Sexo[10];
  12.     int Edad;
  13.     int Handicap;
  14. } Player[10];
  15.  
  16. void Order( lista[] )
  17. {
  18.     int size = length( lista );
  19.  
  20.     cout << size;
  21. }
  22.  
  23. int main()
  24. {
  25.     Order( Player[10] );
  26.  
  27.     return 0;
  28. }

Se que por ejemplo en la funcion Order me faltaria agregarle el tipo al parametro, pero la verdad es que no se que ponerle, ya que en este caso no es un array comun y corriente, igual supongo que no es el unico error que tiene el codigo... alguna ayuda?

Gracias.
  #9 (permalink)  
Antiguo 23/02/2012, 17:30
 
Fecha de Ingreso: febrero-2012
Mensajes: 2
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: funcion con uso de array y size

El tipo de parámetro que quieres pasar en la función order yo me supongo que es de tipo struct, así que esa sería su extensión.
Pero aún así, que quieres hacer con este código?? lo que tienes escrito me da que te dará un par de errores, y el uso de una función como lenght para averiguar el tamaño no creo que te ayude. Es mejor que tu mismo intentes hacer una función para averiguar tamaños y tu tengas el control de la memoria que utilizas.
Para empezar que es lo que quieres realizar con el código?
  #10 (permalink)  
Antiguo 23/02/2012, 17:33
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: funcion con uso de array y size

Código C++:
Ver original
  1. #include <iostream>
  2.  
  3. #define length(a) ( sizeof ( a ) / sizeof ( a[0] ) )
  4.  
  5. using namespace std;
  6.  
  7. struct Perfil
  8. {
  9.     char Nombre[15];
  10.     char Apellido[15];
  11.     char Sexo[10];
  12.     int Edad;
  13.     int Handicap;
  14. } Player[10];
  15.  
  16. void Order(struct Perfil  lista [] )
  17. {
  18.     int size = length( lista );
  19.  
  20.     cout << size;
  21. }
  22.  
  23. int main()
  24. {
  25.     Order( Player );
  26.  
  27.     return 0;
  28. }

Esto creo que es lo que queres....
  #11 (permalink)  
Antiguo 23/02/2012, 22:30
 
Fecha de Ingreso: julio-2010
Mensajes: 126
Antigüedad: 13 años, 9 meses
Puntos: 5
Respuesta: funcion con uso de array y size

Gracias, ahora entendi bien los errores que tenia... muchas gracias, era eso lo que estaba buscando. El unico problema por resolver que queda es el tema del macro, por alguna razon ya no funciona al pasar el array por la funcion... alguna alternativa?

Gracias!
  #12 (permalink)  
Antiguo 24/02/2012, 08:04
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: funcion con uso de array y size

como no funciona?? No te da el resultado esperado?? Si es asi es porque lo que te dije antes lo que quieres hacer no es posible.
  #13 (permalink)  
Antiguo 24/02/2012, 10:59
 
Fecha de Ingreso: diciembre-2011
Ubicación: Crespo - Entre Rios
Mensajes: 155
Antigüedad: 12 años, 4 meses
Puntos: 25
Respuesta: funcion con uso de array y size

todo lo que te dijo Sam90 anteriormente es correcto y no podes utilizar el macro que te dio dentro de la funcion.

tendrias que buscar otras soluciones, como usar la clase vector de la STL.... pero viendo tu codigo me imagino que la funcion se encarga de ordenar de alguna manera el vector, entonces te recomiendo que le pases como parametro el tamaño del vector tambien:

Código C++:
Ver original
  1. #include <iostream>
  2.  
  3. #define length(a) ( sizeof ( a ) / sizeof ( a[0] ) )
  4.  
  5. using namespace std;
  6.  
  7. struct Perfil
  8. {
  9.     char Nombre[15];
  10.     char Apellido[15];
  11.     char Sexo[10];
  12.     int Edad;
  13.     int Handicap;
  14. } Player[10];
  15.  
  16. void Order(struct Perfil  lista [], int size )
  17. {
  18. //ordenar    
  19. }
  20.  
  21. int main()
  22.  
  23. {
  24.     Order( Player, length(Player) );
  25.     return 0;
  26. }

en el codigo anterior si funciona el macro.

Saludos.
  #14 (permalink)  
Antiguo 25/02/2012, 18:20
 
Fecha de Ingreso: julio-2010
Mensajes: 126
Antigüedad: 13 años, 9 meses
Puntos: 5
Respuesta: funcion con uso de array y size

Claro, pasandole el tamaño del vector como parametro sabia que se solucionaba... pero yo lo queria hacer de una forma mas funcional y simple, como para tener una funcion independientemente de lo que haga en este programa... que lastima que no se pueda, la verdad es que pense que C++ era mas flexible en esas cosas, aun asi, sigo sin entender el porque no se puede. Si mal no recuerdo he logrado hacer ese tipo de cosas en Pawn :S

Con respecto a que length funciona en el codigo anterior, no se a que te referis... si se supone que al final no se podia hacer eso... a mi me da como resultado 0 con el codigo anterior, sin embargo deberia salir 10, que es el tamaño del vector.

Gracias.
  #15 (permalink)  
Antiguo 25/02/2012, 19:08
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: funcion con uso de array y size

Si quieres hacer algo mas funcional o que paresca mas funcional puedes utilizar una clases y sobrecargar sus operadores... Como ejemplo tienes la clase vector que a simple vista puede ser utilizada como un array pero oculta ciertas cosas.

Investiga sobre eso.

Etiquetas: funcion, size, variables
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 13:08.