Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

171
Vistas
Copie la matriz 2d a otra matriz 2d

Estoy tratando de crear un programa en C que copie números de una matriz 2d a otra, pero específicamente. (ver imagen)

Código:

 int main(){ int numbers[6][8] = { {1,1,1,1,1,1,1,1},//0 {2,2,2,2,2,2,2,2},//1 {3,3,3,3,3,3,3,3},//2 {4,4,4,4,4,4,4,4},//3 {5,5,5,5,5,5,5,5},//4 {6,6,6,6,6,6,6,6} //5 }; int output[2*8][3]; for(int i = 0; i < 3; i++){ for(int j = 0; j < 2*8; j++){ output[j][i] = numbers[i][j]; } } for(int j = 0; j < 2*8; j++){ for(int i = 0; i < 3; i++){ printf("%d ", output[j][i]); } printf("\n"); } }

Mi salida:

1 2 3
1 2 3
1 2 3
1 2 3
1 2 3
1 2 3
1 2 3
1 2 3

2 3 4
2 3 4
2 3 4
2 3 4
2 3 4
2 3 4
2 3 4
2 3 4

Pero es malo.

La salida debería verse así:

1 2 3
1 2 3
1 2 3
1 2 3
1 2 3
1 2 3
1 2 3
1 2 3

4 5 6
4 5 6
4 5 6
4 5 6
4 5 6
4 5 6
4 5 6
4 5 6

El problema es que en mi salida en la segunda parte tengo el número de las filas 1, 2 y 3 (de la matriz de números). Pero se suponía que eran las filas 3, 4 y 5.

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Tienes que tener tus índices correctos :-)

 for (int i = 0; i < 3; i++) { for (int j = 0; j < 16; j++) { output[j][i] = numbers[j / 8 * 3 + i][j % 8]; } }
over 4 years ago · Santiago Trujillo Denunciar

0

En base a su código, lo divido en dos casos, y la segunda parte pongo +2 así: output[j][i] = numbers[i+2][j];

 #include <iostream> using namespace std; int main(){ int numbers[6][8] = { {1,1,1,1,1,1,1,1},//0 {2,2,2,2,2,2,2,2},//1 {3,3,3,3,3,3,3,3},//2 {4,4,4,4,4,4,4,4},//3 {5,5,5,5,5,5,5,5},//4 {6,6,6,6,6,6,6,6} //5 }; int output[2*8][3]; for(int i = 0; i < 3; i++){ for(int j = 0; j < 8; j++){ output[j][i] = numbers[i][j]; } } for(int i = 0; i < 3; i++){ for(int j = 8; j < 16; j++){ output[j][i] = numbers[i+2][j]; } } for(int j = 0; j < 2*8; j++){ for(int i = 0; i < 3; i++){ printf("%d ", output[j][i]); } printf("\n"); } }
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda