assignment-s-13-1.c (1228B)
1 /* Write a function that reverses the elements of an array in place, using only a single 2 pointer argument, and return void. */ 3 4 #include <stdio.h> 5 #include <stdlib.h> 6 7 void inputarr(int[], int); 8 void display(int[], int); 9 void reverse(int *); 10 11 int main() 12 { 13 int size, *arr; 14 printf("How many element do you want to add: "); 15 scanf("%d", &size); 16 arr = (int *)malloc((size + 1) * sizeof(int)); 17 inputarr(arr, size); 18 printf("\n=== Before Reverse ===\n"); 19 display(arr, size); 20 reverse(arr); 21 printf("\n\n=== After Reverse ===\n"); 22 display(arr, size); 23 free(arr); 24 return 0; 25 } 26 27 void inputarr(int arr[], int n) 28 { 29 int i; 30 arr[0] = n; 31 for (i = 1; i <= n; i++) 32 { 33 printf("Enter element %d: ", i); 34 scanf("%d", &arr[i]); 35 } 36 } 37 38 void display(int arr[], int n) 39 { 40 int i; 41 for (i = 1; i <= n; i++) 42 { 43 printf("\nIndex: %-2d | Value: %-5d | Address: %p", i, arr[i], (void *)&arr[i]); 44 } 45 } 46 47 void reverse(int *arr) 48 { 49 int *start = arr + 1; 50 int size = *arr; 51 int *end = arr + size; 52 while (start < end) 53 { 54 *start = *start ^ *end; 55 *end = *start ^ *end; 56 *start = *start ^ *end; 57 start++; 58 end--; 59 } 60 }