• Welcome to Test Foro de elhacker.net SMF 2.1.
 

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

Started by creiko, 15 June 2016, 10:01 AM

0 Members and 1 Guest are viewing this topic.

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
Code (cpp) Select

#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:

Code (c) Select
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


Code (cpp) Select

#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

Code (c) Select
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

Code (cpp) Select

#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]);
}
}