Guest User

vtora

a guest
Dec 17th, 2019
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.52 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. void moveElements(char[], int, int);
  6.  
  7. int main() {
  8.  
  9. int m, l;
  10. char str[100];
  11. cout << "str = ";
  12. cin.getline(str, 100);
  13.  
  14. for (int i = 0; i <= 100; i++) {
  15. if ((int)str[i] < ' ' || str[i] > '~') {
  16. cout << "Error";
  17. }
  18.  
  19. }
  20.  
  21.  
  22. cout << "M = ";
  23. cin >> m;
  24. if (m > 21 || m < 0) {
  25. cout << "Error";
  26. }
  27.  
  28. cout << ", L = ";
  29. cin >> l;
  30. if (l > 100 || l < 0) {
  31. cout << "Error";
  32. }
  33.  
  34. moveElements(str, m, l);
  35. return 0;
  36. }
  37.  
  38. void moveElements(char str[], int m, int l) {
  39. int lastPossition = 0;
  40. char str2[100];
  41. for (int i = 0; i < 100; ++i) {
  42. if (str[i] == '\000') {
  43. lastPossition = i - 1;
  44. break;
  45. }
  46.  
  47. int value = (int)str[i];
  48. str2[i] = str[i];
  49. if (value < 32 || value > 126 ||
  50. (str[i] == '\\' && (str[i + 1] == 'r' || str[i + 1] == 'n' || str[i + 1] == 't'))) {
  51. cout << str;
  52. return;
  53. }
  54. }
  55.  
  56.  
  57. for (int i = 0; i <= 100; ++i) {
  58. if (str[i] == '\000') {
  59. break;
  60. }
  61. char current = str[i];
  62. int toChangePossiton = 0;
  63. if (i + l <= lastPossition) {
  64. toChangePossiton = i + l;
  65. }
  66. else {
  67. toChangePossiton = ((i + l) - lastPossition) - 1;
  68. }
  69. char updeated = current + m;
  70. str2[toChangePossiton] = updeated;
  71. }
  72. cout << str2;
  73. }
Advertisement
Add Comment
Please, Sign In to add comment