fork download
  1. // shift.cpp: определяет точку входа для консольного приложения.
  2. //
  3.  
  4. //#include "stdafx.h"
  5. #include <stdio.h>
  6. #include <string.h>
  7.  
  8. void reverse(char *arr, int s, int e)
  9. {
  10. char *start = arr + s;
  11. char *end = arr + e - 1;
  12.  
  13. while (start < end)
  14. {
  15. char c = *start;
  16. *start = *end;
  17. *end = c;
  18.  
  19. start++;
  20. end--;
  21. }
  22. }
  23.  
  24. //n - размерность массива
  25. //m - на сколько сдвинуть
  26. void shift(char *arr, int n, int m)
  27. {
  28. reverse(arr, 0, m);
  29. reverse(arr, m, n);
  30. reverse(arr, 0, n);
  31. }
  32.  
  33. int main()
  34. {
  35. char arr[32];
  36.  
  37. strcpy(arr, "1234567890");
  38.  
  39. printf("\n<<<<\n");
  40.  
  41. for (size_t m = 0; m <= strlen(arr); m++, strcpy(arr, "1234567890"))
  42. {
  43. shift(arr, strlen(arr), m);
  44. printf("%s\n", arr);
  45. }
  46.  
  47. printf("\n>>>>\n");
  48.  
  49. for (size_t m = 0; m <= strlen(arr); m++, strcpy(arr, "1234567890"))
  50. {
  51. shift(arr, strlen(arr), strlen(arr)-m);
  52. printf("%s\n", arr);
  53. }
  54.  
  55. return 0;
  56. }
  57.  
  58.  
Success #stdin #stdout 0s 15232KB
stdin
Standard input is empty
stdout
<<<<
1234567890
2345678901
3456789012
4567890123
5678901234
6789012345
7890123456
8901234567
9012345678
0123456789
1234567890

>>>>
1234567890
0123456789
9012345678
8901234567
7890123456
6789012345
5678901234
4567890123
3456789012
2345678901
1234567890