Como puedo obtener una matriz desde los parametros de una funcion?
Necesito hacer una funcion para multiplicar matrices:
int multmatrices(int afilas, int acolumnas, aarreglo[][], int bfilas, int bcolumnas, barreglo[][]){
Me da error al intentar obtener las matrices asi.
Tenes mal la declaracion de la funcion, tnes que especificar el tipo de dato de las matrices y los tamaños(filas y columnas)
Saludos
int multmatrices(int afilas, int acolumnas, int aarreglo[][], int bfilas, int bcolumnas, int barreglo[][]){
Las filas y columnas seran asignadas por el usuario es decir para eso son las otras variables: afilas, acolumnas, bfilas, bcolumnas.
En el caso de las matrices tenes q especificar si o si las filas y columnas, sino tenes que usar matrices dinamicos para hacer uso de afilas, acolumnas,....
Saludos
PD: enrealiadad si se puede omitir las filas en la declaracion, pero no las columnas
Y como puedo utilizar matrices dinamicos, lo necesito ya que la funcion a crear necesariamente debe ser asignada por el usuario.
Debes especificar únicamente las columnas, pero en tu caso debes utilizar un apuntador y pasarle a la función el número de columnas de tu matriz dinámica ya que necesitas saber sí o sí el número de columnas ya que al final tu matriz en memoria no es más que un arreglo, es decir, digamos que tienes el siguiente arreglo en memoria:
1 2 3 4 5 6
Puedes verlo como varias matrices:
2x3
1 2 3
4 5 6
3x2
1 2
3 4
5 6
6x1
1
2
3
4
5
6
Todo depende de cómo la quieras tratar.
CitarY como puedo utilizar matrices dinamicos
Tnes q investigar el tema de "memoria dinamica", vas a ver funciones como malloc, realloc, free.. comenza intentando hacer un arreglo unidimencional dinamico y luego pasa por la matriz. Cualquier duda pregunta
Si te parece muy dificil el tema, la otra alternativa es crear matrices con tamaños maximos, ejemplo:
#include <stdio.h>
#define MAX_FILAS 10
#define MAX_COLUMNAS 10
int multmatrices(int afilas, int acolumnas, int aarreglo[MAX_FILAS][MAX_COLUMNAS], int bfilas, int bcolumnas, int barreglo[MAX_FILAS][MAX_COLUMNAS]) { /* ........ */ }
int main() {
/* variables */
int a[MAX_FILAS][MAX_COLUMNAS], b[MAX_FILAS][MAX_COLUMNAS];
/* ingreso del usuario de los tamaños de la matriz; debe ser menor que los
valores maximos definidos */
multmatrices( afilas, acolumnas, a, b, bfilas, bcolumnas);
return 0;
}
Muchisimas gracias, me funciona mejor lo de declarar constantes y con un simple if puedo comprobar de que los valores del usuario sean menores :D
Lo de memoria dinamica y punteros quizas lo averigue para luego.
Saludos.
Por si te interesa, lo de matrices/arrays dinámicos es muy fácil de implementar usando una de las librerías estándares que trae C++ y que se llama "vector".
Usarlo es tan sencillo como muestro en el código:
#include <vector>
int main() {
int size = 5;
vector<int> array(size);
array[0] = 8;
array[1] = 3;
//array[5] daría error porque está fuera del rango
}
Descripción: http://www.cplusplus.com/reference/vector/vector/
Ejemplos: http://www.mochima.com/tutorials/vectors.html
Fuente: Google.
Saludos,
Wofo.