Advertisement
Guest User

Untitled

a guest
Jul 18th, 2019
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.93 KB | None | 0 0
  1. #include <stdio.h>
  2.  
  3. void print(int array[], int i, int size)
  4. {  
  5.     if (i == size)
  6.     {
  7.         printf("\n");
  8.         return;
  9.     }
  10.     printf("%d ", array[i]);
  11.     print(array, i + 1, size);
  12. }
  13.  
  14. void swap_array(int old[], int new[], int i, int size)
  15. {
  16.     if (i == size)
  17.     {
  18.         return;
  19.     }
  20.     old[i] = new[i];
  21.     swap_array(old, new, i + 1, size);
  22. }
  23.  
  24. void left(int old[], int new[], int size, int i)
  25. {
  26.     if (i == 0)
  27.     {
  28.         new[size - 1] = old[0];
  29.         return;
  30.     }
  31.     new[i - 1] = old[i];
  32.     left (old, new, size, i - 1);
  33. }
  34.  
  35. void right(int old[], int new[], int size, int i)
  36. {
  37.     if (i == size)
  38.     {
  39.         new[size - 1] = old[0];
  40.         return;
  41.     }
  42.     new[i - 1] = old[size - i];
  43.     // print(new, 0, i);
  44.     right(old, new, size, i + 1);
  45. }
  46.  
  47. void loop(char caracter, int quant, int old[], int new[], int size)
  48. {
  49.     if (quant == 0)
  50.     {
  51.         return;
  52.     }
  53.     if (caracter == 'D')
  54.     {
  55.         right(old, new, size, 1);
  56.     }
  57.     else
  58.     {
  59.         left(old, new, size, size - 1);
  60.     }
  61.     swap_array(old, new, 0, size);
  62.     printf("quant: %d\n", quant);
  63.     printf("old: "); print(old, 0, size);
  64.     printf("new: "); print(new, 0, size);
  65.     loop(caracter, quant - 1, old, new, size);
  66. }
  67.  
  68.  
  69.  
  70. void command(int old[], int new[], int size)
  71. {
  72.     char caracter;
  73.     int quant;
  74.  
  75.     scanf(" %c %d", &caracter, &quant);
  76.  
  77.     if (caracter == 'S')
  78.     {
  79.         return;
  80.     }
  81.     printf("%c %d\n", caracter, quant);
  82.     loop(caracter, quant, old, new, size);
  83.     print(new, 0, size);
  84.  
  85.     command(old, new, size);
  86. }
  87.  
  88. void read(int old[], int i, int num) // ler
  89. {
  90.     if (i < num)
  91.     {
  92.         scanf("%d", &old[i]);
  93.         read(old, i + 1, num);
  94.     }
  95. }
  96.  
  97. int main()
  98. {
  99.     int num;
  100.     scanf("%d", &num);
  101.     int old[num];
  102.     int new[num];
  103.     read(old, 0, num);
  104.     print(old, 0, num);
  105.     command(old, new, num);
  106.     return 0;
  107. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement