-
Notifications
You must be signed in to change notification settings - Fork 3
/
day056.c
64 lines (52 loc) · 1.95 KB
/
day056.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include <stdio.h>
#include <stdlib.h>
// Left rotation function....
void shiftArrayLeft(int *array_pointer, int array_size){
int temp = *(array_pointer+0);
for(int i=0 ; i<array_size; i++)
*(array_pointer+i) = *(array_pointer+(i+1));
*(array_pointer+(array_size-1)) = temp;
}
// Right rotation function....
void shiftArrayRight(int *array_pointer, int array_size){
int temp = *(array_pointer+(array_size-1));
for(int i=(array_size-1) ; i>=0; i--)
*(array_pointer+i) = *(array_pointer+(i-1));
*(array_pointer+0) = temp;
}
int main(void) {
int *array_pointer, array_size, times_of_rotation, side_of_rotation;
printf("Enter the size of the array\n");
scanf("%d", &array_size);
array_pointer = (int *) calloc(array_size, sizeof(int));
// get Input array....
printf("Input %d numbers\n", array_size);
for(int i=0; i<array_size; i++){
scanf("%d", &(*(i+array_pointer)));
}
// get which side_of_rotation....
printf("Want to perform left rotate or right rotate?\n1.Left rotate\n2.Right rotate");
scanf("%d", &side_of_rotation);
// get number of times rotation....
printf("Input number of times to rotate\n");
scanf("%d", ×_of_rotation);
// perform rotation based on side_of_rotation....
if(side_of_rotation == 1){
// rotating the array for the given times....
for(int i=0; i<times_of_rotation; i++)
shiftArrayLeft(array_pointer, array_size);
// printing the output array....
printf("Array after left rotation %d time(s)\n", times_of_rotation);
for(int i=0; i<array_size; i++)
printf("%d\n", *(array_pointer+i));
}else{
// rotating the array for the given times....
for(int i=0; i<times_of_rotation; i++)
shiftArrayRight(array_pointer, array_size);
// printing the output array....
printf("Array after right rotation %d time(s)\n", times_of_rotation);
for(int i=0; i<array_size; i++)
printf("%d\n", *(array_pointer+i));
}
return 0;
}