VasilM

6a_reverser

Dec 8th, 2012
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.04 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <sstream>
  4.  
  5. using namespace std;
  6.  
  7. string inp, buff1, buff;
  8.  
  9. void reverser(unsigned a, unsigned b)
  10. { unsigned i, j, k, c;
  11.   int tmp;
  12.   for (c=(b-a)/2, k=a, j=b, i=0; i<=c; i++, j--, k++) // i<=c
  13.   { tmp = buff[k];
  14.     buff[k] = buff[j];
  15.     buff[j] = tmp;
  16.   }
  17. }
  18.  
  19. void shift3(unsigned k)
  20. { reverser(0, k-1);
  21.   reverser(k, buff.length()-1);
  22.   reverser(0, buff.length()-1);
  23. }
  24.  
  25. // фукция която обръща стринг в число, ако стринга се състои от int
  26. // ако не - връща -1 и разбираме, че това е низа по който ще правим
  27. // размествания:
  28. int isNumeric( string inp ){
  29.     istringstream iss( inp );
  30.     int tst;
  31.     iss >> tst;
  32.     if ( ! iss ) return -1;
  33.     return tst;
  34. }
  35.  
  36. int main()
  37. {
  38.     while ( cin >> inp ){
  39.         if ( isNumeric( inp ) == -1 ) buff = buff1 = inp;
  40.         else{
  41.             if( isNumeric(inp) != 0 ) shift3( isNumeric(inp) );
  42.             cout << buff << endl;
  43.             buff = buff1;
  44.         }
  45.     }
  46.  return 0;
  47. }
  48. /*
  49. Задача 6а.
  50. Да се напише програма за бързо циклично преместване на буквите в дадена дума.
  51.  
  52. Вход:
  53. На входа се задава дума (низ, съдържащ само n букви от латинската азбука) и на следващия ред редица от m цели числа  k -
  54. брой на исканите циклични премествания на буквите в думата. Входът съдържа N примери.
  55. .
  56. Изход:
  57. За всяко циклично преместване на нов ред се отпечатва получената дума.
  58.  
  59. Ограничения:
  60.  0 < n < 1000000
  61.  0 < m < 1000000
  62. -1 < k < 1000000
  63.   0 < N < 100
  64.  
  65. Пример:
  66. abracadabra
  67. 4 1 0
  68. Floccinaucinihilipilification
  69. 10 20
  70.  
  71. Решение на примера:
  72. cadabraabra
  73. bracadabraa
  74. abracadabra
  75. inihilipilificationFloccinauc
  76. ificationFloccinaucinihilipil
  77. */
Advertisement
Add Comment
Please, Sign In to add comment