Pasando asignadas dinámicamente matriz bidimensional a una Función [con el programa C ++]

aprender: Cómo matriz 2D pase dinámico a una función definida por el usuario ? En este artículo, vamos a ver diferentes formas de acceder matriz 2D a través de una función.

El matriz bidimensional es el tipo de matriz multidimensional que está representado en forma de filas y columnas, también conocido como matriz.

La asignación dinámica se refiere a la asignación de memoria en tiempo de ejecución. Asignación dinámica de memoria permite que su programa para obtener más ejecución while memoria, o para liberarlo if no se requiere.

Ahora se mueve hacia nuestro objetivo, pasando matriz 2D a una función requiere dos parámetros filas y columnas , que son variables de tiempo de ejecución es decir, tamaño de la matriz 2D (= filas * columnas) deciden / asignar al tiempo de ejecución.

tanto para contrarrestar esta situación usamos punteros. El uso de puntero, que es fácil de pasar y la matriz de acceso a través de funciones.

Hay dos formas de pasar dinámico matriz 2D a una función:

1) matriz Pasando como puntero a puntero (int ** arr)

Usando nuevo operador podemos asignar dinámicamente memoria en tiempo de ejecución para el formación. Nuevos operador devuelve la dirección del espacio asignado método .Esta Pases referencia a un array como puntero a la función double junto con filas y columnas.

#include<iostream>
using namespace std;
//function to display 2D array
void show(int **arr,int x,int y)
{
int i,j;
for(i=0;i<x;i++)
{
for(j=0;j<y;j++)
{
cout<<arr[i][j]<<" ";
}
cout<<endl;
}
}
//main program
int main()
{
int n,m;
//input number of rows and columns
cout<<"Enter No. of rows: ";
cin>>n;
cout<<"Enter No. of columns: ";
cin>>m;
//pointer to 2D array
int **A=new int*[n];
//pointer initialization
for(int i=0;i<n;i++)
{
A[i]=new int[m];
}
//input array elements
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
cin>>A[i][j];
}
}
//display 2D array
show(A,n,m);
return 0;
}

salida

Enter No. of rows: 4
Enter No. of columns: 5
1 2 3 4 5 1 2 3 4 5 6 7 8 9 1 2 3 4 5 2
1 2 3 4 5
1 2 3 4 5
6 7 8 9 1
2 3 4 5 2

Pasando puntero array (int * arr)

En este método estamos pasando referencia de matriz usando puntero a la función y acceder matriz 2D como una matriz bidimensional . Desde matriz 2D almacena en la memoria mismo que de una matriz unidimensional.

#include<iostream>
using namespace std;
//function to display 2D array
void show(int *arr,int x,int y)
{
int i,j,k=0;
for(i=0;i<x;i++)
{
for(j=0;j<y;j++)
{
cout<<arr[k]<<" ";
k++;
}
cout<<endl;
}
}
//main program
int main()
{
int n,m;
cout<<"Enter No. of rows: ";
cin>>n;
cout<<"Enter No. of columns: ";
cin>>m;
//2D array declaration
int A[n][m];
//input array elements
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
cin>>A[i][j];
}
}
//display 2D arrray
show(*A,n,m);
return 0;
}

salida

Enter No. of rows: 3
Enter No. of columns: 4
1 2 3 4 5 6 7 8 9 10 11 12
1 2 3 4
5 6 7 8
9 10 11 12


Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *