Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Desplazar columna de una matriz

Estas en el tema de Desplazar columna de una matriz en el foro de C/C++ en Foros del Web. Hola a todos, les escribo para ver si pueden apoyarme con con el siguiente problema: busco es desplazar los valores de las columnas, 1 posición ...
  #1 (permalink)  
Antiguo 10/03/2016, 12:44
 
Fecha de Ingreso: marzo-2016
Mensajes: 2
Antigüedad: 8 años, 1 mes
Puntos: 0
Pregunta Desplazar columna de una matriz

Hola a todos, les escribo para ver si pueden apoyarme con con el siguiente problema: busco es desplazar los valores de las columnas, 1 posición hacía la izquierda, algo similar a esto:

1 2 3 4 --> 2 3 4 1
1 2 3 4 --> 2 3 4 1
1 2 3 4 --> 2 3 4 1
1 2 3 4 --> 2 3 4 1

Inicialmente requería un movimiento hacía la derecha, pero ahora es al lado contrario. No logró encontrar la manera de hacer el cambio. Agradezco su apoyo.

Código C++:
Ver original
  1. #include <stdio.h>
  2. #include<stdlib.h>
  3. //desplaza filas a la columnas a la derecha//
  4. #define kFILAS 5
  5. #define kCOLS 4
  6. typedef int TMatriz[kFILAS][kCOLS];
  7.  
  8. void leerMatriz(TMatriz matriz)
  9. {
  10. int i, j;
  11. for(i=0; i< kFILAS; i++)
  12. for(j=0; j< kCOLS; j++)
  13. {
  14. printf("Introduzca el elemento (%d, %d):", i, j);
  15. scanf("%d", &matriz[i][j]);
  16. }
  17. }
  18. void correrMatriz(TMatriz matriz)
  19. {
  20. int i;
  21. int j;
  22. int temp;
  23.  
  24. /* procesamos cada una de las filas */
  25. for (i = 0; i < kFILAS; i++){
  26. /* resguardo del valor de la ultima columna */
  27. temp = matriz[i][kCOLS - 1];
  28.  
  29. /* los elementos restantes los desplazamos */
  30. for (j = kCOLS - 1; j > 0; j--)
  31. matriz[i][j] = matriz[i][j - 1];
  32.  
  33. /* actualizamos el primer elemento */
  34. matriz[i][j] = temp;
  35. }
  36. }
  37.  
  38. void escribirMatriz(TMatriz matriz)
  39. {
  40. int i, j;
  41. for(i=0; i< kFILAS; i++)
  42. {
  43. for(j=0; j< kCOLS; j++)
  44. printf("%d ", matriz[i][j]);
  45. printf("\n");
  46. }
  47. }
  48. int main()
  49. {
  50. TMatriz matriz;
  51. leerMatriz(matriz);
  52. printf("Matriz original:\n");
  53. escribirMatriz(matriz);
  54. correrMatriz(matriz);
  55. printf("Matriz desplazada: \n");
  56. escribirMatriz(matriz);
  57. system("pause");
  58. return(0);
  59. }
  #2 (permalink)  
Antiguo 10/03/2016, 13:48
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 6 meses
Puntos: 204
Respuesta: Desplazar columna de una matriz

Si quieres desplazar a la izquierda tienes que:

copiar el valor de la columna 0 en temp
con un bucle copiar los valores de las columnas(1-3) en (0-2)
copiar el valor de temp en la columna 3

Tu algoritmo, si te fijas, no hace exactamente eso.

Un saludo.
__________________
La ayuda se paga con esfuerzo o con dinero. Si no estás dispuesto a esforzarte y quieres que te hagan los deberes pide presupuesto, al menos así ahorrarás tiempo.

Etiquetas: c++, columna, matriz
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:19.