Ver Mensaje Individual
  #3 (permalink)  
Antiguo 18/03/2015, 06:45
ecfisa
 
Fecha de Ingreso: julio-2012
Mensajes: 133
Antigüedad: 12 años, 4 meses
Puntos: 22
Respuesta: Rotar arreglo a la derecha

Hola RGT.

También podrías hacer la rotación sobre el mismo arreglo.
Código C:
Ver original
  1. void shrvec(int* vec, int lenvec, int nrot) {
  2.   int i, j, aux;
  3.  
  4.   for(j = 0; j < nrot; j++) {
  5.     aux = vec[lenvec-1];
  6.     for(i = lenvec; i > 0; i--) vec[i] = vec[i-1];
  7.     vec[0] = aux;
  8.   }
  9. }

Uso:
Código C:
Ver original
  1. {
  2.   int v[5] = {1,2,3,4,5};
  3.  
  4.   shrvec(v, sizeof(v)/sizeof(v[0]), 2);
  5.   ...

Saludos.

(Edito)
O a la izquierda:
Código C:
Ver original
  1. void shlvec(int* vec, int lenvec, int nrot) {
  2.   int i, j, aux;
  3.  
  4.   for(j = 0; j < nrot; j++) {
  5.     aux = vec[0];
  6.     for(i = 0; i < lenvec; i++) vec[i] = vec[i+1];
  7.     vec[lenvec-1] = aux;
  8.   }
  9. }

Última edición por ecfisa; 18/03/2015 a las 07:09 Razón: agregar codigo