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

Prototipo de funcion que modifica una matriz

Estas en el tema de Prototipo de funcion que modifica una matriz en el foro de C/C++ en Foros del Web. Bueno es la primera vez que quiero organizar el codigo en diferentes ficheros y tengo que declarar los prototipos de las funciones en el header ...
  #1 (permalink)  
Antiguo 30/04/2011, 19:36
 
Fecha de Ingreso: febrero-2011
Mensajes: 33
Antigüedad: 13 años, 10 meses
Puntos: 0
Prototipo de funcion que modifica una matriz

Bueno es la primera vez que quiero organizar el codigo en diferentes ficheros y tengo que declarar los prototipos de las funciones en el header antes de usarlas en su correspondiente cpp.

Con funciones int clasicas no he tenido ningun problema:
int add(int, int);

pero el problema es que quiero tener en un fichero aparte muchas matrices que pertenecen a una propiedad de un objeto que he creado.

El punto esta en que no se como debo hacer el prototipo de la funcion porque
int getMapa(char&,int&) para char la matriz no me la toma.
quizas:
int getMapa(char[][]&,int&)
o como es una matriz,tengo que puntear a la memoria...
int getMapa(char**&,int&)

pues nada ninguna de esas sirvio, basicamente quiero declarar en el main una matriz en blanco de tipo char, y que una funcion tome la matriz del main y le cambie los caracteres dependiendo del numero que hemos puesto en el int. pero la funcion estaria en una cabecera y no en el main

Ya se que no me explico muy bien, pero si pudiesen darme una mano se lo agradeceria un monton

http://foro.elhacker.net/programacio...#ixzz1L3oXTaMl
  #2 (permalink)  
Antiguo 01/05/2011, 05:10
 
Fecha de Ingreso: abril-2011
Mensajes: 88
Antigüedad: 13 años, 8 meses
Puntos: 24
Respuesta: Prototipo de funcion que modifica una matriz

Depende de el tipo de objeto que aloja los datos de tu matriz. Tienes una clase 'matriz' creada? lo estás guardando en un array de char? array de int?

char matriz[NUM][NUM];
char funcion(char* matriz, int num);

int matriz[NUM][NUM];
int funcion(int* matriz, int num);

donde num será NUM*NUM, es decir, el número de datos que forman la matriz.

Si tienes una clase 'matriz'
clase_matriz miMatriz;
int funcion(miMatriz &matriz)

y dentro de la clase matriz estaría toda la información necesaria.
__________________
Foros Desarrollo de Juegos
  #3 (permalink)  
Antiguo 01/05/2011, 08:27
 
Fecha de Ingreso: febrero-2011
Mensajes: 33
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Prototipo de funcion que modifica una matriz

en archivo main.cpp creo una matriz de caracteres en blanco.
Código C++:
Ver original
  1. char matriz [][]
en el main() llamar a la funcion
Código C++:
Ver original
  1. getMapa(matriz,1).

En el header lo que quiero es una funcion que sobreescriba la matriz en blanco de main.

Código C++:
Ver original
  1. int getMapa(&Matriz,&numero){
  2. switch (numero){
  3. case 1: Matriz[30][32]={0,0,0,0,0,0,0,0,0,0
  4.                           0,0,0,0,0,0,0,0,0,0
  5.                           0,0,0,0,0,0,0,0,0,0
  6.                           0,0,0,0,0,0,0,0,0,0
  7.                           0,0,0,0,0,0,0,0,0,0}
  8. case 2: Matriz[30][32]={
  9.                           0,0,0,0,0,0,0,0,0,0
  10.                           0,0,0,0,0,0,0,0,0,0
  11.                           0,0,0,0,0,0,0,0,0,0
  12.                           0,0,0,0,0,0,0,0,0,0}
  13. }
  14. return 0;
  15. }
(El numero de columnas y filas es un ejemplo, ya se que no corresponde con la cantidad de 0)

Lo que no se es como hacer el prototipo, ya que lo que quiero es que la funcion del header me cambie la matriz referenciada.

Tengo que declarar el numero de columnas y filas en el main.cpp? en el .h? es obligatorio?

Luego en la declaracion de prototipos del .h se ponen nombres para los tipos? osea no es int getMapa(char*,int&), o int getMapa(char*Mapa,int&numero)

Muchas gracias por responder
  #4 (permalink)  
Antiguo 01/05/2011, 11:07
 
Fecha de Ingreso: abril-2011
Mensajes: 88
Antigüedad: 13 años, 8 meses
Puntos: 24
Respuesta: Prototipo de funcion que modifica una matriz

En C++ no puedes declarar un array y después cambiar su dimensión a no ser que uses memoria dinámica. Lo que no entiendo es porque tienes un array de tipo char y tu función devuelve un int. Si quieres una matriz de números enteros usa tipo int.

Si necesitas crear una matriz cuyas dimensiones no se saben en tiempo de compilación vas a necesitar alocar memoria dinámica por lo que alomejor este artículo te ayudaría.
http://alanchavez.com/matrices-dinamicas-en-c-desmitificadas

Aunque es un poco más de trabajo te recomendaría crear tu propia clase matriz para manejar mejor las operaciones con matrices.
__________________
Foros Desarrollo de Juegos
  #5 (permalink)  
Antiguo 01/05/2011, 11:19
 
Fecha de Ingreso: febrero-2011
Mensajes: 33
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Prototipo de funcion que modifica una matriz

Cita:
Iniciado por ssaammuu Ver Mensaje
En C++ no puedes declarar un array y después cambiar su dimensión a no ser que uses memoria dinámica. Lo que no entiendo es porque tienes un array de tipo char y tu función devuelve un int.

Las dimensiones no son importantes en este caso ya que son constantes que defino antes

luego no quiero que la funcion me devuelva un array, quiero que me modifique el que le pase por referencia, para no estar moviendo esa cantidad de memoria cada 2 x 3, por eso devuelve un int. ej:

prototipo en .h
int funcion(char&,char&)


cpp dependiente del .h
int funcion(&letra,&letrados){ letra='c';letrados='d'; return 0}

cpp main
char a='a';
char b='b';

funcion(a,b);

cout>>a>>" , ">>b>>endl;

cambia los caracteres referenciados pero me devuelve un 0, para no ocupar memoria en la transicion.

El problema lo tengo en como prototipar la funcion, con un array multidimensional como argumento referenciado

Etiquetas: funcion, matriz, prototipo
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 20:50.