Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: bucanero en 12 de Marzo 2016, 03:23
-
buenas soy nuevo por aquí, alguien me puede ayudar con un ejercicio donde debo almacenar en una matriz NxM, y ordenarlo de menor a mayor. Lo tengo casi listo, el problema es que cuando lo ordena me modifica también la dimensión de la matriz es decir si se introduce NxM quedara en pantalla ordenado MxN.
Tambien tengo otra duda, que tal si deseo que la matriz quede ordenada de menor a mayor pero que sea en forma de serpiente, me explico,
1 6 -> 7
2 5 7
3 -> 4 8
claro sea de las dimensiones que sea ejemplo: 3x4, 5x2, 2x2. pero que cuando quede ordenado no cambie o varíe o invierta las dimensiones.
Hasta los momentos tengo esto:
#include <iostream>
using namespace std;
int main(void)
{
int f,c,aux=0;
int matriz[100][100];
//lleno la matriz
cout<<"\nIntroducir Tamaño De La Fila: ";
cin>>f;
cout<<"\nIntroducir Tamaño De La Columna: ";
cin>>c;
cout<<endl;
for(int i=0; i<f; i++)
{
for(int j=0; j<c; j++)
{
cout<<"Introducir Datos: ";
cin>>matriz[i][j];
}
}
//imprimo la matriz como se llena
cout<<"\nLos Datos De La Matriz Fueron Introducidos Asi:"<<endl;
for(int i=0; i<f; i++)
{
for(int j=0; j<c; j++)
{
cout<<matriz[i][j]<<" ";
}
cout<<endl;
}
//ordeno la matriz de menor a mayor
for(int i=0; i<f; i++)
{
for(int j=0; j<c; j++)
{
for(int x=0; x<f;x++)
{
for(int y=0; y<c; y++)
{
if(matriz[i][j]<matriz[x][y])
{
aux=matriz[i][j];
matriz[i][j]=matriz[x][y];
matriz[x][y]=aux;
}
}
}
}
}
//imprimo la matriz ordenada de menor a mayor (pero me invierte las dimensiones)
cout<<"\nLos Datos De La Matriz Fueron Ordenados de Menor a Mayor:"<<endl;
for(int i=0; i<c; i++)
{
for(int j=0; j<f; j++)
{
cout<<matriz[j][i]<<" ";
}
cout<<endl;
}
cout<<endl;
system("pause");
}
Gracias y espero su ayuda
-
Hola bucanero antes de poder responder necesitaría saber con ejemplos qué es lo que se quiere hacer.
Por ejemplo supongamos la matriz:
(8 3 11)
(4 1 7)
(22 9 5)
Podemos ordenar por filas y el resultado sería:
(3 8 11)
(1 4 7)
(5 9 22 )
O podemos ordenar por columnas y el resultado sería:
(4 1 5)
(8 3 7)
(22 9 11)
O podemos hacer un orden absoluto de izquierda a derecha y de arriba a abajo y el resultado sería:
(1 3 4)
(5 7 8 )
(9 11 22)
¿Qué tipo de ordenación quieres realizar? ¿Puedes poner ejemplos?
Saludos
-
Buenas Alex, la matriz tiene que iniciar en el último puesto y ascender en forma de serpiente por ejemplo tengo la matriz
8 3 11
4 1 7
22 9 5
Y debe quedar así
22 5 《 4
11 7 3
9 《 8 1 > último puesto y sube
La matriz debe ser nxm es decir 2x5 ó 4 x3 ... no importa la dimensión siempre debe iniciar en el ultimo puesto. Si me entiendes? Si añado otra columna y los números 45, 50, 60 esta debería que dar así
45 《 22 5 《 4
50 11 7 3
60 9 《 8 1 > último puesto y sube
-
Hola, pues quizás es torpeza mía, a ver si lo entiendo. Partimos de
8 3 11
4 1 7
22 9 5
Ordeno los números de mayor a menor y resulta: 22, 11, 9, 8, 7, 5, 4, 3, 1
Ahora empiezo a colocar y pongo los números en la primera columna
22
11
9
Sigo en la siguiente columna pero con el orden al revés
22 5
11 7
9 8
Y ahora sigo en la siguiente columna y otra vez al revés (esto sería "como una serpiente"):
22 5 4
11 7 3
9 8 1
El número más grande lo tengo arriba a la izquierda.
Pero cuando añades 45, 50 y 60 no está el número más grande arriba a la izquierda ¿Por qué?
-
He allí la cuestión no es sea de mayor a menor, es que inicia en el u timo puesto abajo y allí sigue como una serpiente hasta donde cuantas columnas sean por eso se dificulta cuando sea de nxm si agregó la columna que dijiste, el 60 quedaría abajo pero si agregó otra nueva columna el numero mayor estaría arriba
-
Hola
Tal y como yo lo entiendo si partimos de
40 8 3 11
10 4 1 7
60 22 9 5
Ponemos el 60 en primera posición y vamos rellenando hacia abajo:
60 9 8 1
40 10 7 3
22 11 5 4
No entiendo qué significa "inicial en el último puesto abajo"
Saludos