Título: Rotar n veces un arreglo con n digitos Publicado por: chona en 6 Marzo 2020, 04:28 am Hola tengo que determinar un vector con n casillas y hacerlo girar determinadas veces para calcular el vector y
ejemplo casillas=5 giro=1 vectorx {1,2,3,4,5} vectory {5,1,2,3,4} Lo hice de la siguiente forma pero no entiendo muy bien donde colocar los giros para que rote el arreglo Agradeceria su ayuda Código
Título: Re: Rotar n veces un arreglo con n digitos Publicado por: K-YreX en 6 Marzo 2020, 05:26 am Para rotar las posiciones de un array necesitas guardar uno de los valores en una variable auxiliar para empezar a guardar los nuevos valores en la posición que has guardado fuera y al final restaurar ese valor que tiene la variable auxiliar. Ahora bien, hay muchas formas de hacerlo.
Una forma visual es hacer una función que rote el array a la derecha 1 vez y hacer un bucle for que llame a dicha funciones n veces siendo n el número de posiciones que se quiere rotar el array a la derecha. No es lo más eficiente pero como te digo es visual. Código
Para mejorar un poco la eficiencia del código, en vez de repetir el for tantas veces como el valor de rotaciones, podemos hacerlo (rotaciones % size) veces. Así aunque el número de rotaciones sea muy grande, siempre daremos menos de una vuelta completa al array. Si lo quieres hacer más eficiente puedes trabajar sobre esta versión y utilizar un poco las matemáticas para sacar alguna relación entre las posiciones del array el número de rotaciones. Esta parte te la dejo a ti que te va a ser más satisfactorio que si te lo encuentras hecho. Y recuerda que si te atascas en alguna parte puedes volver a dejar tu código para que te echemos una mano. Y te recomendaría usar nombres de variables más significativos; sobre todo si el código lo van a tener que leer terceras personas como es el caso... :rolleyes: Suerte. :-X |