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
#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]);
}
}
¿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
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
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
#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");
}
}
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;
}
}
}
Después de tanto hacer ya lo pude solucionar me llevo un poco de tiempo
estaba mal en las condiciones como decias
#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]);
}
}