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

Matrices y procedimientos.

Estas en el tema de Matrices y procedimientos. en el foro de C/C++ en Foros del Web. Hola, quiero plantearles mi duda que ha surgido con un problema que tengo que hacer para programación C para poder aprobar la asignatura. El problema ...
  #1 (permalink)  
Antiguo 01/01/2013, 13:37
Avatar de veniwarez  
Fecha de Ingreso: julio-2010
Mensajes: 110
Antigüedad: 13 años, 9 meses
Puntos: 3
Pregunta Matrices y procedimientos.

Hola, quiero plantearles mi duda que ha surgido con un problema que tengo que hacer para programación C para poder aprobar la asignatura.
El problema principal es que los profesores de esto no nos han contado Nada.

El problema es que he hecho un programa que pide 2 valores (filas y columnas) y entonces creo y lleno una matriz con X filas y Y columnas con los valores que el usuario quiere y hasta aquí todo OK pero entonces tengo que hacer una función que tome la matriz MATRIZ[X][Y] y busque el mayor numero en cada fila y el problema es este como coger la matriz en la función, de todas las formas que he probado ninguna funciona, me dice que lo pasado no es un array.

En definitiva mi priblema es que no se como coger esta matriz desde la acción ya que ha sido creada en el programa por el usuario y pienso que el problema es el pasar los valores
PEJ: void mayor(MATRIZ[X][Y]){...... } me dice lógicamente que ni X ni Y están definidas.

Agradecería toda la ayuda posible.
Gracias
Atte Veni.
  #2 (permalink)  
Antiguo 01/01/2013, 14:09
Avatar de L3m0n  
Fecha de Ingreso: diciembre-2011
Mensajes: 219
Antigüedad: 12 años, 4 meses
Puntos: 46
Respuesta: Matrices y procedimientos.

Buenas,

Evidentemente no se pueden pasar estas matrices ya que el compilador no sabe que tamaño han de tener. Lo primero que te diría es, necesariamente has de hacer una función que haga eso, quiero decir, no lo puedes poner en el main directamente, que son 2-3 linias.

Si has de hacer una funcion obligatoriamente se me ocurre que puedes tratar esta matriz bidimensional como una matriz unidimensional, si haces esto el compilador no te dara ningun problema.

La otra solución es un tanto mas "complicada" ya que requiere un uso de punteros que hay que entender lo que se esta haciendo. En esta web se explica bastante bien:
http://stackoverflow.com/questions/4...arguments-in-c

Aunque yo te recomiendo que antes intentes usar la matriz unidimensional.



Saludos.
  #3 (permalink)  
Antiguo 01/01/2013, 14:34
Avatar de veniwarez  
Fecha de Ingreso: julio-2010
Mensajes: 110
Antigüedad: 13 años, 9 meses
Puntos: 3
Respuesta: Matrices y procedimientos.

Hola, gracias wow no acabo de entenerlo y ademas no nos han enseñado nada de esto tan complicado, intentaré aunque dudo que pueda.

Gracias
  #4 (permalink)  
Antiguo 02/01/2013, 09:27
 
Fecha de Ingreso: diciembre-2011
Ubicación: CABA
Mensajes: 433
Antigüedad: 12 años, 4 meses
Puntos: 94
Respuesta: Matrices y procedimientos.

Hola! como decis que no te especificaron nada, lo que podes hacer es crear dos macros que contengan el maximo de filas y de columnas. Luego en el main crear una matriz con ese tamaño y en la funcion pasar los valores X e Y determinados por el usuario, ejemplo

Código C:
Ver original
  1. #define FILA 10
  2. #define COLUMNAS 10
  3. void func(int matriz[FILA][COLUMNAS], int, int); /* declaracion de funcion */
  4. /* ...... */
  5.  
  6. /* en el main */
  7.   int matriz[FILA][COLUMNA];
  8.   func(matriz,x,y);  /* x, y son las filas y columnas que el usuario elije */

Saludos
  #5 (permalink)  
Antiguo 02/01/2013, 14:59
Avatar de veniwarez  
Fecha de Ingreso: julio-2010
Mensajes: 110
Antigüedad: 13 años, 9 meses
Puntos: 3
Respuesta: Matrices y procedimientos.

Hola, muchas gracias, sí esta tarde he estado haciendolo como has dicho pero antes de verlo y lo he hecho muuuy parecido creo una matriz con las maximas columnas y filas y entonces solo lleno las que quiero!

Muchas gracias de veras!!

Atte Veni

Etiquetas: funcion, matrices, programa
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 01:38.