Você está na página 1de 1

#include <stdio.

h>
#include <stdlib.h>
#include <locale.h>
#define N 5

void movedor(int *v, int deslocamento);

int main(void) {
int vetor[N], i, d; //d = deslocamento
setlocale(LC_ALL, "Portuguese");
printf("Digite %d elementos para preencher um vetor:\n", N);
for (i = 0; i < N; i++)
scanf("%d", &vetor[i]);
printf("Determine o valor da quantidade de índices a serem deslocados no vetor:
");
scanf("%d", &d);
movedor(vetor, d);
for (i = 0; i < N; i++)
printf("%d ", vetor[i]);
return 0;
}

void movedor(int *v, int deslocamento) { //a função tem um parâmetro do tipo
ponteiro que recebe o endereço do primeiro índice do vetor na linha 16
while (deslocamento > N) //se o deslocamento for maior que o número de
elementos do vetor, ele é ajustado
deslocamento -= N;
if (deslocamento == N) {
printf("O vetor não foi alterado."); // se o deslcoamento for igual ao
número de elementos de um vetor, ele não é alterado.
exit(0);
}
int temp[N], i; // temp[] é um vetor que armazena temporariamente os valores do
vetor original, na ordem desloacada, para repassar essa ordem
int a = 0;
for (i = N - deslocamento; i < N; i++) { // começando pelos valores da frente
do vetor, os elementos que seriam deslocados para "fora" do vetor
temp[a] = *(v + i); //são armazenados no início do vetor
temporário.
a++;
}
for (i = 0; i < N - deslocamento; i++) { //aqui o 'a' retoma o temp de onde já
estava o vetor, e o 'i' volta ao início do vetor original para
temp[a] = *(v + i); // passar os valores do início do
vetor original para o vetor temporário a partir do 'a'.
a++;
}
for (i = 0; i < N; i++)
*(v + i) = temp[i]; // passando os valores de temp para o vetor da main.
}

Você também pode gostar