Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: creiko en 15 Junio 2016, 10:01 AM

Título: hacer matriz 5 *5 y ordenar los numero de la última fila de mayor a menor
Publicado por: creiko en 15 Junio 2016, 10:01 AM
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]);
}
}




Título: Re: hacer matriz 5 *5 y ordenar los numero de la última fila de mayor a menor
Publicado por: class_OpenGL en 15 Junio 2016, 13:57 PM
¿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
Título: Re: hacer matriz 5 *5 y ordenar los numero de la última fila de mayor a menor
Publicado por: AlbertoBSD en 15 Junio 2016, 14:07 PM
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
Título: Re: hacer matriz 5 *5 y ordenar los numero de la última fila de mayor a menor
Publicado por: creiko en 15 Junio 2016, 16:13 PM
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");
}
}

Título: Re: hacer matriz 5 *5 y ordenar los numero de la última fila de mayor a menor
Publicado por: class_OpenGL en 15 Junio 2016, 16:55 PM
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;
}
}
}
Título: Re: hacer matriz 5 *5 y ordenar los numero de la última fila de mayor a menor
Publicado por: creiko en 15 Junio 2016, 22:33 PM
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]);
}
}