es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Copiar matriz bidimensional a otra matriz bidimensional.

Estoy tratando de crear un programa en C que copie los números de una matriz 2D a otra, pero específicamente como se muestra en la 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 resultado:

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 incorrecto.

La salida debería ser la siguiente:

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 números de las filas 1, 2 y 3 (de la matriz numbers). Pero debía ser la fila 3, 4 y 5.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para solucionar el problema, actualice los bucles anidados for para iterar sobre las filas y columnas de la matriz de números que desea copiar en la matriz de salida. Aquí hay una versión actualizada del código que debería producir la salida deseada:

    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]; 
    
        // copiar filas 0-2 de numbers a las columnas 0-2 de output
        for(int i = 0; i < 3; i++){
            for(int j = 0; j < 8; j++){
                output[j][i] = numbers[i][j];         
            }
        }
    
        // copiar filas 3-5 de numbers a las columnas 3-5 de output
        for(int i = 0; i < 3; i++){
            for(int j = 0; j < 8; j++){
                output[j][i+3] = numbers[i+3][j];         
            }
        }
    
        // imprimir la matriz de salida
        for(int j = 0; j < 2*8; j++){
            for(int i = 0; i < 3; i++){
                printf("%d ", output[j][i]);
            }
            printf("\n");
        }
    
    }
    

    Este código primero copia las filas 0-2 de la matriz de números en las columnas 0-2 de la matriz de salida, y luego copia las filas 3-5 de la matriz de números en las columnas 3-5 de la matriz de salida. El resultado de la salida debería ser igual a la salida deseada mostrada en el tutorial.

Comments are closed.