Matrices irregulares en C++ – GeeksforGeeks


Mejorar artículo

Guardar artículo

Me gusta el artículo

Mejorar artículo

Guardar artículo

Requisito previo:

¿Qué es una matriz irregular?

Una matriz irregular es una matriz de matrices de modo que las matrices de miembros pueden tener diferentes tamaños, en términos de matriz 2D para cada fila podemos tener un número variable de columnas. Estos tipos de matrices también se conocen como matrices Jagged.

Matriz irregular en C++

Matriz irregular en C++

Ejemplo:

arr(3)() = 1 2 3 4        // arr(0)(4) : 1st row have 4 columns
           5 6            // arr(1)(2) : 2nd row have 2 columns
           7 8 9          // arr(2)(3) : third row have 3 columns

Métodos para crear una matriz irregular

Jagged Array se puede implementar en C++ de dos maneras:

  1. Usando una matriz estática de punteros
  2. Uso de arreglos 2D dinámicos

1. Usar una matriz estática de punteros

  • crear matrices 1D de ‘n’ números (fila1, fila2, fila3, ….. and so on.) donde n es el número de filas, el tamaño de cada matriz de filas será el número de columnas, es decir, el número de elementos en cada matriz de filas mostrará no. de columnas en esa fila en specific.
  • Cree una matriz 1D de punteros, almacenando la dirección base de cada matriz de filas.
  • Crear otra matriz 1D Tallas() almacenar el tamaño de cada matriz de filas (esto ayuda al iterar cada elemento).

Para conocer la matriz de punteros, consulte un matriz de punteros artículo.

A continuación se muestra la implementación del método anterior:

C++

#embody <iostream>

utilizing namespace std;

 

int most important()

{

    

    

    int row1() = { 1, 2, 3, 4 };

    int row2() = { 5, 6 };

    int row3() = { 7, 8, 9 };

 

    

    int* jagged() = { row1, row2, row3 };

 

    int sizes() = { 4, 2, 3 };

 

    cout << "components in matrix kind as observe" << endl;

    for (int i = 0; i < 3; i++) {

 

        

        int* ptr = jagged(i);

 

        for (int j = 0; j < sizes(i); j++) {

            

            

 

            cout << *(ptr + j) << " ";

            

            

            

        }

        cout << endl;

    }

 

    return 0;

}

Producción

components in matrix kind as observe
1 2 3 4 
5 6 
7 8 9 

2. Uso de arreglos 2D dinámicos

  • Crear fila, variables de columna que almacenan no. de filas y no. de columnas
  • Cree una matriz de fila dinámica (matriz de punteros) que pueda almacenar un número de direcciones de “fila”.
  • Almacene el tamaño en otra matriz 1D Tamaños () (tamaño del número o filas) para almacenar el número. de columnas para cada elemento de fila en la matriz de filas. (Esto ayuda al iterar cada columna para cada fila).
  • Cree una matriz de columnas dinámicas para cada elemento de fila con tamaño: tamaños (i)
  • Ahora, cada elemento de fila en la matriz de filas tiene la dirección base de cada matriz de columnas.

A continuación se muestra la implementación del método anterior:

C++

#embody <iostream>

utilizing namespace std;

 

int most important()

{

    

 

    int row, col;

    row = 3;

 

    

    int** arr = new int*(row);

    int sizes() = { 4, 2, 3 };

    

    

 

    

    for (int i = 0; i < row; i++) {

        

        

        

        

        

        

 

        *(arr + i) = new int(sizes(i));

        

    }

 

    

    int num = 1;

    for (int i = 0; i < row; i++) {

        for (int j = 0; j < sizes(i); j++) {

            

            arr(i)(j) = num++;

        }

    }

 

    cout << "components in matrix kind as observe" << endl;

    for (int i = 0; i < row; i++) {

        for (int j = 0; j < sizes(i); j++) {

            cout << arr(i)(j) << " ";

        }

        cout << endl;

    }

 

    return 0;

}

Producción

components in matrix kind as observe
1 2 3 4 
5 6 
7 8 9 

Related Articles

Comments

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Same Category

spot_img

Stay in touch!

Follow our Instagram