Dev - C++ - MATRIZ NxM

 
Vista:

MATRIZ NxM

Publicado por Ray (2 intervenciones) el 26/03/2009 02:04:53
Hola a todos, soy nuevo en C++ y necesito ayuda con el siguiente problema, necesito crear una matriz de MxN definida por el usuario, que ingrese los valores y que al finalizar me ordene la matriz por ejemplo

suponiendo que el usuario desee una matriz de 3 x 4 introducioendo los datos siguientes

6 8 4
5 2 1
0 1 8

los ordene de la siguiente manera

0 1 1
2 4 5
6 8 8

espero puedan ayudarme, y de antemano gracias a quien atiende mi llamado....
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:MATRIZ NxM

Publicado por AntonioG (28 intervenciones) el 26/03/2009 04:55:44
Hola,

Yo te ayudo. Que llevas del programa? ya tienes los de crear la matriz y leer los datos?
Si no tienes eso, basate en este programa:
http://familiaytu.com/foroC/pedir-memoria-para-una-matriz-llenarla-y-liberar-memoria-t87.html

Ahora que ya tienes eso, ahora vamos con lo importante, como ordenar los elementos.

Bueno, tenemos los siguiente:
int nr,nc: tamaño de la matriz
float **m <-- matriz donde ya estan los datos (esto para que coincida con el codigo del link anteriro)

Ahora, vamos a ordenar la matriz con un metodo simple, con el metodo de la burbuja. El metodo de la burbuja basicamente necesita recorrer la matriz con un solo indice, y eso lo podemos hacer con el siguiente truco:
k va a ser nuestro indice que va de 0 a nrxnc-1, por ejemplo si la matrzi es de 3x3, k va a recorrer la matriz de la siguiente manera:
0 1 2
3 4 5
6 7 8
Ahora, se sabe (si no lo sabias, aprendetelo, es un buen truco)
k/nc da el renglon del k-esimo elemento en la matriz
k%nc da la columna del k-esimo elemnto en la matriz

Para la burbuja necesitamos dos indices k1, y k2 , que se recorre en dos fors:
1
2
3
4
5
for(k1=0;k1<nr*nc;k1++)
for(k2=k1+1;k2<nr*nc;k2++)
   {
   [Aqui ordena los datos]
   }

En [Aqui ordena los datos] debes hacer intercambios si es que no estan ordenados.

Usando el truco de los indices, la parte para ordenar la matriz es asi>
1
2
3
4
5
6
7
8
9
10
11
12
int k1,k2;
float t;
for(k1=0;k1<nr*nc;k1++)
for(k2=k1+1;k2<nr*nc;k2++)
  {
  if(m[k1/nc][k1%nc]>m[k2/nc][k2%nc])
     {
     t=m[k1/nc][k1%nc];
     m[k1/nc][k1%nc]=m[k2/nc][k2%nc];
     m[k2/nc][k2%nc]=t;
     }
  }

y ya!! m ya tiene los elementos ordenados como tu quieres.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:MATRIZ NxM

Publicado por Ray (2 intervenciones) el 26/03/2009 21:39:16
gracias mano... voy a tratar de entenderlo y te contare despues..
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar