Cómo tomar una matriz 1d y convertir la matriz en una matriz 2d en una función c ++ para que la matriz ahora sea 2d en main ()

¿Qué quieres decir con convertir una matriz en una matriz?

Tiene una matriz que es un vector (1 xn): [0, 1, 2, …, n].

Desea convertir a una matriz (mxn):

[00, 01, 02,…, 0n]
[10, 11, 12, …, 1n]
… … … … … … … … …
[m0, m1, m2, …, mn]

Puede ver que su matriz es solo 1 fila de una matriz.

Si su objetivo es crear una matriz (1 xn), puede crear una nueva matriz y poner los valores de la matriz.

#include
usando el espacio de nombres estándar;

int main () {
const int TAMAÑO = 5;
int array [TAMAÑO] = {1, 2, 3, 4, 5}; // Tu matriz
int matriz [1] [TAMAÑO];

// Iterar a través de la matriz asignando sus valores a la matriz
para (int i = 0; i <TAMAÑO; i ++) {
matriz [0] [i] = matriz [i];
}

// Ahora tienes una matriz 1xSIZE que contiene los valores de la matriz
}

No puedes 1D es 1D y 2D es 2D. No puede cambiar ni alterar la estructura de ninguna matriz en C o C ++, una vez definida.

Ahora, puedes fingir que lo hiciste, sí.

Puede hacer una matriz de matrices (NO lo mismo que una matriz 2D) y acceder a los elementos utilizando la sintaxis [y] [x] como si estuviera accediendo a una matriz 2D. Pero no lo eres. Solo estás fingiendo.

O puede colocar mal un bloque de memoria y pretender que es una matriz (o una matriz de matrices) y nuevamente acceder a los elementos con [x] [y] como si fuera una matriz 2D real. Pero no lo es. Sigues fingiendo.

Y si olvidas que estás fingiendo, pueden surgir todo tipo de errores.

No deberías estar jugando con las matrices en C ++ de todos modos. Las matrices son C. Si desea aprender a programar con matrices de forma segura, debería haberlo aprendido mientras estudiaba C. Una vez que comience a programar en C ++, debería utilizar vectores, calcomanías, listas y mapas. Esa es la forma en C ++ de almacenar datos, no matrices.

¿Qué tipo de datos? Si son enteros, los otros ya han explicado cómo hacerlo. Crea una matriz de enteros 1D. Tiene una segunda matriz que tiene [n] [m], la completa usando for (int i = 0; i

Un conjunto de cadenas es un caso especial porque solo necesita usar uno para el bucle si desea usar la cadena como un conjunto de caracteres. Las cadenas son una matriz de caracteres 1D para que pueda crear una sola cadena, darle algo y usar una para el bucle para llenar una matriz de cadenas con el valor de una cadena.

Según tengo entendido, tiene una matriz de una sola dimensión en main, llamamos a una función pasar una matriz de una sola dimensión y tener una matriz de dos d en main, almacenando la misma información en forma de 2 d.
A continuación se ofrece una solución simple basada en los supuestos establecidos.
Si ha asumido alguna situación diferente, por favor comente, intentaré encontrar una solución
Supongo un caso en el que las calificaciones de 4 estudiantes, cada una con 3 asignaturas, se almacenan en una matriz de una sola dimensión s, con su información, quiero una matriz de doble dimensión d desde donde pueda obtener las calificaciones de cada estudiante por separado.

Después de llamar a la función, tengo las marcas en la matriz d, donde el primer subíndice se refiere al alumno y el segundo al sujeto

void get (int s [], int d [] [3], int row, int col)
{
int k = 0;
para (int i = 0; i para (int j = 0; j {
d [i] [j] = s [k];
k ++;

}
}
vacío principal()
{
clrscr ();
int s [12] = {10,20,30,11,21,31,10,8,12,9,4,8};
int d [4] [3];
obtener (s, d, 4,3);
}

No puede cambiar el tipo de una variable en C ++. Pero si desea copiar los datos de una matriz de una sola dimensión en una matriz de mayor dimensión de tamaño coincidente, hay una manera simple y sucia.

#include

int main () {
int x [] = {1,2,3,4,5,6,7,8,9,20};
int y [5] [2];
memcpy (& y, & x, sizeof (int) * 10);
}

Sí, esto es técnicamente una trampa (y obviamente debe ajustarse para funcionar si no conoce de antemano el tamaño de sus datos), pero funciona de maravilla.

Supongo que quiere decir que su matriz 1d representa una cuadrícula de datos 2d. Como decir que tenemos una cuadrícula de enteros de 10 x 10. Podríamos almacenarlos como:

int grid [10 * 10];

Y podríamos acceder a cualquier miembro de la cuadrícula de esta manera:

int & GetIntAt (int x, int y)

int GetIntAt (int x, int y)
{
cuadrícula de retorno [y * 10 + x];
}

Como una matriz 2d, esa misma cuadrícula es:

int grid [10] [10];

y accedemos así:

int GetIntAt (int x, int y)
{
cuadrícula de retorno [y] [x]; // o [x] [y] si lo prefieres, probablemente no te importe cuál
}

Entonces, ¿cómo lo conviertes? Me gusta esto:

int grid1d [10 * 10];
int grid2d [10] [10];
int i = 0;
para (int x = 0; x <10; ++ x)
{
para (int y = 0; y <10; ++ y)
{
grid2d [y] [x] = grid1d [i];
++ i;
}
}

¿Es eso lo que estás preguntando?

Muy bien … puede que no te guste esto, pero voy a decirlo de todos modos. APRENDA A CODIGO. Si no puede resolver esta tarea por su cuenta, entonces no conoce los conceptos básicos de la codificación. Debe seguir un conjunto de tutoriales o leer un libro sobre C ++ o la programación en general antes de enviar spam a la comunidad con malas preguntas.