Rotar o desplazar una matriz
Publicado por Fernando (1 intervención) el 02/03/2019 13:16:54
Hola buenas, tengo que hacer un ejercicio donde rotar una posición a la derecha en cada fila en una matriz.
Por ejemplo:
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
se convierta en
4 1 2 3
8 5 6 7
12 9 10 11
16 13 14 15
20 17 18 19
El caso es que no lo tengo bien resuelto, pero creo que no es correcto. Por usar en los if valores constantes (por ejemplo J==0). En este caso la matriz siempre es de 5x4. pero para que sirva en matrices de otros tamaños?.
Gracias.
Por ejemplo:
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
se convierta en
4 1 2 3
8 5 6 7
12 9 10 11
16 13 14 15
20 17 18 19
El caso es que no lo tengo bien resuelto, pero creo que no es correcto. Por usar en los if valores constantes (por ejemplo J==0). En este caso la matriz siempre es de 5x4. pero para que sirva en matrices de otros tamaños?.
Gracias.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
void rotar(int[,] matriz)
{
int i, j;
int filas, columnas, inicio, fin=0;
filas = matriz.GetLength(0);
columnas = matriz.GetLength(1);
for (i = 0; i < filas; i++)
{ //este siempre será el valor de la primera fila y columna matriz[i, 0]
inicio = matriz[i,0];
// Recorremos todos los valores
for (j = 0; j < columnas; j++)
{
if (j == 1)
{
//estamos en la segunda columna
matriz[i, j] = fin;
}
//matriz[i,j]= matriz[i,j];
if (j == columnas - 1)
{// si se cumple es porque es el último valor de cada fila
fin = matriz[i, j];
matriz[i, j] = matriz[i, j - 1];
}
}
}
}
Valora esta pregunta
0