// Laboratorio 4 - Esercizio 2 // Matteo Schiff - s295565 #include #include #define MAX_N 30 void ruota(int v[MAX_N], int N, int P, int dir); void ruota(int v[MAX_N], int N, int P, int dir) { int t; P = P % N; for (int x = 0; x < P; x++) { if (dir == 1) { t = v[0]; for (int i = 0; i < N - 1; i++) { v[i] = v[i+1]; } v[N-1] = t; } else { t = v[N-1]; for (int i = N-1; i > 0; i--) { v[i] = v[i-1]; } v[0] = t; } } for (int x = 0; x < N; x++) { printf("%d ", v[x]); } putchar('\n'); } int main() { int V[MAX_N], N, P, dir; do { printf("Inserisci N compreso tra 0 e %d: ", MAX_N); } while(scanf("%d", &N) != 1 || N > MAX_N || N < 0); printf("Inserisci il vettore di lunghezza %d: ", N); for(int i = 0; i < N; i++) { scanf(" %d", &V[i]); } do { printf("Inserisci il numero di rotazioni e la direzione (formato ' '): "); scanf(" %d %d", &P, &dir); ruota(V, N, P, dir); } while (P != 0); return 0; }