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.

¿Cómo puedo ordenar las columnas de una matriz bidimensional?

Hola a todos, quiero ordenar las columnas de una matriz bidimensional. Quiero tomar las dimensiones y elementos de la matriz del usuario y mostrarla como una matriz. Luego, restar la forma ordenada de la misma matriz. Solo necesitamos ordenar las columnas de la matriz. Por favor, ayuda.

Algo así:

{{0, 1, 3},
{6, 0, 8},
{5, 9, 2}}

{{0, 0, 2},
{5, 1, 3},
{6, 9, 8}}

Escribí un código en C ++ para esto, solo puedo ordenar la primera columna de la matriz y mostrarla, pero no puedo hacerlo para las otras columnas. Apelo a ti por esto.

“`C++
#include <iostream>
using namespace std;
int main()
{
int column, row;
cout << "Columna = ";
cin >> column;
cout << "Fila = ";
cin >> row;
int array[column][row];
int sortedarray[column];
for (int z = 0; z < column; z++) {
for (int a = 0; a < row; a++) {
cin >> array[z][a];
}
}
for (int i = 0; i < column; i++) {
sortedarray[i] = array[i][0];
}

<pre><code>cout << "\n";
for (int y = 0; y < column; y++) {
for (int i = 0; i < row; i++) {
cout << array[y][i] << " ";
}
cout << endl;
}
cout << "\n";

int temp = 0;
for (int i = 1; i < column; i++)
for (int j = 0; j < column – i; j++) {
if (sortedarray[j] > sortedarray[j + 1]) {
temp = sortedarray[j];
sortedarray[j] = sortedarray[j + 1];
sortedarray[j + 1] = temp;
}
}
cout << "ARREGLO ordenado \n ";
for (int i = 0; i < column; i++) {
cout << sortedarray[i] << " ";
}
</code></pre>

}
“`

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para ordenar las columnas de un array bidimensional, es necesario modificar el código existente.

    En primer lugar, se debe crear un bucle para iterar sobre todas las columnas. Luego, dentro del bucle de las columnas, se debe crear otro bucle para ordenar cada columna por separado, utilizando los valores ordenados de la primera columna como referencia.

    Aquí está el código modificado:

    “`c++
    #include
    using namespace std;
    int main()
    {
    int columnas, filas;
    cout << “Columnas = “;
    cin >> columnas;
    cout << “Filas = “;
    cin >> filas;
    int array[columnas][filas];
    int array_ordenado[columnas];
    for (int z = 0; z < columnas; z++) {
    for (int a = 0; a < filas; a++) {
    cin >> array[z][a];
    }
    }
    for (int i = 0; i < columnas; i++) {
    array_ordenado[i] = array[i][0];
    }

    cout << "\n";
    for (int y = 0; y < columnas; y++) {
        for (int i = 0; i < filas; i++) {
            cout << array[y][i] << "    ";
        }
        cout << endl;
    }
    cout << "\n";
    
    int temp = 0;
    for (int i = 1; i < columnas; i++)
        for (int j = 0; j < columnas - i; j++) {
            if (array_ordenado[j] > array_ordenado[j + 1]) {
                temp = array_ordenado[j];
                array_ordenado[j] = array_ordenado[j + 1];
                array_ordenado[j + 1] = temp;
                // ordenar la columna correspondiente
                for (int k = 0; k < filas; k++) {
                    int temp2 = array[j][k];
                    array[j][k] = array[j+1][k];
                    array[j+1][k] = temp2;
                }
            }
        }
    cout << "Array ordenado:\n";
    for (int y = 0; y < columnas; y++) {
        for (int i = 0; i < filas; i++) {
            cout << array[y][i] << "    ";
        }
        cout << endl;
    }
    

    }
    “`

    Este código debería mostrar el array original, ordenarlo en función de la primera columna y luego mostrar el array ordenado.

    ¡Espero que esto ayude!

Comments are closed.