Rejack

[Lec. #7] Exc. 5

Mar 12th, 2024
1,230
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.91 KB | None | 0 0
  1. #include <stdio.h>
  2.  
  3. void reverse(int* arr, int n);
  4. void swap(int* ptr1, int* ptr2);
  5. void rev_rec(int* arr, int n);
  6.  
  7. void main()
  8. {
  9.     int array[] = { 1,2,3,4,5 };
  10.  
  11.     int * arr;
  12.  
  13.     arr = array;
  14.  
  15.     int i;
  16.  
  17.     printf("\nStart of program\n\n");
  18.  
  19.     printf("Array before program:\n");
  20.  
  21.     for (i = 0; i < sizeof(array) / sizeof(int); i++)
  22.         printf("%d ", array[i]);
  23.  
  24.  
  25.     //reverse( arr, sizeof(array) / sizeof(int));
  26.     rev_rec(arr, sizeof(array) / sizeof(int));
  27.  
  28.     printf("\n\nArray after program:\n");
  29.  
  30.     for (i = 0; i < sizeof(array) / sizeof(int); i++)
  31.         printf("%d ", array[i]);
  32. }
  33.  
  34. void reverse(int* arr, int n)
  35. {
  36.     int temp, i;
  37.  
  38.     for (i = 0; i < n / 2; i++)
  39.         swap(&arr[i], &arr[n - 1 - i]);
  40. }
  41.  
  42. void swap(int* ptr1, int* ptr2)
  43. {
  44.     int temp;
  45.  
  46.     temp = *ptr1;
  47.     *ptr1 = *ptr2;
  48.     *ptr2 = temp;
  49. }
  50.  
  51. void rev_rec(int* arr, int n)
  52. {
  53.     if (n > 1)
  54.     {
  55.         swap(arr, arr + n - 1);
  56.  
  57.         rev_rec(arr + 1, n - 2);
  58.     }
  59. }
Advertisement
Add Comment
Please, Sign In to add comment