hacer matriz 5 *5 y ordenar los numero de la última fila de mayor a menor

Iniciado por creiko, 15 Junio 2016, 10:01 AM

0 Miembros y 1 Visitante están viendo este tema.

creiko

buenas lo que tengo que hacer es una matriz de 5*5
coger la ultima fila y ordenar sus numero de mayor a menor

ejemplo:

5 3 2 4 6
8 4 8 4 3
9 2 3 1 7
5 7 9 3 1
2 8 4 3 6

ordenada deberia quedar asi

5 3 2 4 6
8 4 8 4 3
9 2 3 1 7
5 7 9 3 1
8 6 4 3 2


hice lo mismo pero con columnas y me da perfecto
pero no lo puedo hacer con las filas

dejo lo que hice con las columna central de una matriz espero que alguien em de uan idea o me ayude gracias
Código (cpp) [Seleccionar]

#include "stdio.h"
#include "conio.h"
#include "string.h"
#include "windows.h"
#include "stdlib.h"
#include "time.h"
#include "iostream"
#include "stdlib.h"

main ()
{
int i,j,ma[5][5];
int temp;
printf("\tEsta es la Matriz Original: \n");
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
ma[i][j]=1+rand()%(9);
}
}
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
printf("%d ",ma[i][j]);
}
printf("\n");
}
for(int i = 0; i < 5-1; i++)
for(int j = 0; j < 5; j++)

if(ma[j][2] < ma[i+1][2])

{
temp = ma[j][2];
ma[j][2] = ma[i+1][2];
ma[i+1][2] = temp;
}
printf("\n Matriz Organizada por la columna central: \n");
for( int i = 0; i < 5; i++)
{
printf("\n");
for(int j = 0; j < 5; j++)
printf("% d",ma[i][j]);
}
}





class_OpenGL

¿Cuál es exactamente el problema? Da la impresión de que ni tu mismo entiendes el código xDD. Di el problema más concretamente que tienes :D

Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL

AlbertoBSD

Tienes que seleccionar un algoritmo de ordenamiento.

Y de preferencia tratar solo a los ultimos 5 elementos como u  arreglo individual.

Te dejo uno de mis videos sobre matrices

[youtube=640,360]https://www.youtube.com/watch?v=U-zA-VvOllM[/youtube]

Si usas ese metodo puedes posteriormente solo apuntar a los 5 ultimos con:

int *ordenar = NULL;
//...
ordenar = &matriz[N*M- 5]


y ordenar solo un arreglo lineal de 5 numeros.

Saludos
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW

creiko

lo que pasa es que no me muestra bien los resultados

Matriz original

1 7 9 6 4
9 3 3 7 1
8 2 6 9 2
5 5 5 9 5
6 4 2 5 4

deberia quedar asi

1 7 9 6 4
9 3 3 7 1
8 2 6 9 2
5 5 5 9 5
6 5 4 4 2

pero me los muestra así
ahí el error
1 7 9 6 4
9 3 3 7 1
8 2 6 9 2
5 5 5 9 5
6 6 6 6 4


Código (cpp) [Seleccionar]

#include "windows.h"
#include "stdlib.h"
#include "time.h"
#include "iostream"
#include "stdlib.h"

main ()
{
int i,j,ma[5][5];
int temp;
srand (time(NULL));

printf("\tEsta es la Matriz Original: \n");
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
ma[i][j]=1+rand()%(9);
}
}
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
printf("%d ",ma[i][j]);
}
printf("\n");
}
for(int i = 0; i < 5-1; i++)
for(int j = 0; j < 5; j++)

if(ma[4][j] < ma[4][i+1])

{
temp = ma[4][i];
ma[4][j] = ma[4][i+1];
ma[4][i+1] = temp;
}
printf("\n Matriz Organizada por la ultima fila: \n");
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
printf("%d ",ma[i][j]);
}
printf("\n");
}
}


class_OpenGL

Prueba con el siguiente fragmento

for(i = 0; i < 5-1; i++) {
for(j = i+1; j < 5; j++) { // Tendrías que empezar por i+1
if(ma[4][i] < ma[4][j]) { // La comparación estaba mal
temp = ma[4][i];      // En general, los cambios estaban mal
ma[4][i] = ma[4][j];
ma[4][j] = temp;
}
}
}

Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL

creiko

Después de tanto hacer ya lo pude solucionar me llevo un poco de tiempo
estaba mal en las condiciones como decias

Código (cpp) [Seleccionar]

#include "stdio.h"
#include "conio.h"
#include "string.h"
#include "windows.h"
#include "stdlib.h"
#include "time.h"
#include "iostream"
#include "stdlib.h"

main ()
{
int i,j,ma[5][5];
int temp;
srand (time(NULL));

printf("\tEsta es la Matriz Original: \n");
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
ma[i][j]=1+rand()%(9);
}
}
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
printf("%d ",ma[i][j]);
}
printf("\n");
}
for(int i = 0; i < 5-1; i++)
for(int j = 0; j < 5; j++)

if(ma[j][2] >  ma[i+1][2])

{
temp = ma[j][2];
ma[j][2] = ma[i+1][2];
ma[i+1][2] = temp;
}
printf("\n Matriz Organizada por la columna central: \n");
for( int i = 0; i < 5; i++)
{
printf("\n");
for(int j = 0; j < 5; j++)
printf("% d",ma[i][j]);
}
}