[ Foro de C++ ]

Matriz dinámica como parámetro.

11-Dec-2015 15:20
Angel Bravo
1 Respuestas

He creado este código muy básico:


#include <iostream>

using std::cin;
using std::cout;
using std::endl;

int main() {
    int **matriz;
    int fila;
    int columna;
    cout << "Número de filas: ";
    cin >> fila;
    cout << "Número de columnas: ";
    cin >> columna;
    matriz = new int*[fila];
    for(int i = 0; i<fila; i++)     {
        matriz[i] = new int[columna];
    }
    cout << "la nueva matriz es de " << fila << "x" << columna << endl;
    for(int i=0; i<fila; i++) {
        for(int n=0; n<columna; n++) {
            cout << "Elemento " << i+1 << ","<< n+1 << ":";
            cin >> matriz[i][n];
        }
    }
    cout << "la matriz es"<< endl;
    for(int i=0; i<fila; i++) {
        cout << "(";
        for(int n=0; n<columna; n++) {
            cout << matriz[i][n] << " ";
        }
        cout << ")";
        cout << endl;
    }
    return 0;
}


Pero quería dividir el código en diferentes funciones, además de incorporar otras. Querría encontrar la manera de poder crear funciones que reciban una matriz y que al mismo tiempo devolvieran una matriz, algo del tipo:


tipo_dato nombre_funcion (matriz){
return matriz;
}


Gracias.


15-Dec-2015 10:29
Invitado (Caranim)

Los arrays pasados a una función se comportan como si fuesen pasados "por referencia", por lo que cualquier modificación en el mismo se mantendrá al salir de la función. En el caso que describes:

tipo_dato nombre_funcion (matriz){
return matriz;
}

Ni siquiera es necesario el "return matriz" porqué la matriz mantendrá los valores que tuviese al terminar de ejecutarse la función.

Otra opción, en el caso de que lo que busques es devolver una matriz distinta a la pasada por parámetro, sería devolver un puntero al array que quieras devolver.

Espero que te sirva.

Saludos.

Caranim






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)