59 lines
1.2 KiB
C
59 lines
1.2 KiB
C
// Laboratorio 4 - Esercizio 2
|
|
// Matteo Schiff - s295565
|
|
|
|
#include <stdio.h>
|
|
#include <ctype.h>
|
|
#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 '<rotazioni> <direzione>'): ");
|
|
scanf(" %d %d", &P, &dir);
|
|
ruota(V, N, P, dir);
|
|
} while (P != 0);
|
|
|
|
|
|
return 0;
|
|
}
|