Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- #include <sstream>
- using namespace std;
- string inp, buff1, buff;
- void reverser(unsigned a, unsigned b)
- { unsigned i, j, k, c;
- int tmp;
- for (c=(b-a)/2, k=a, j=b, i=0; i<=c; i++, j--, k++) // i<=c
- { tmp = buff[k];
- buff[k] = buff[j];
- buff[j] = tmp;
- }
- }
- void shift3(unsigned k)
- { reverser(0, k-1);
- reverser(k, buff.length()-1);
- reverser(0, buff.length()-1);
- }
- // фукция която обръща стринг в число, ако стринга се състои от int
- // ако не - връща -1 и разбираме, че това е низа по който ще правим
- // размествания:
- int isNumeric( string inp ){
- istringstream iss( inp );
- int tst;
- iss >> tst;
- if ( ! iss ) return -1;
- return tst;
- }
- int main()
- {
- while ( cin >> inp ){
- if ( isNumeric( inp ) == -1 ) buff = buff1 = inp;
- else{
- if( isNumeric(inp) != 0 ) shift3( isNumeric(inp) );
- cout << buff << endl;
- buff = buff1;
- }
- }
- return 0;
- }
- /*
- Задача 6а.
- Да се напише програма за бързо циклично преместване на буквите в дадена дума.
- Вход:
- На входа се задава дума (низ, съдържащ само n букви от латинската азбука) и на следващия ред редица от m цели числа k -
- брой на исканите циклични премествания на буквите в думата. Входът съдържа N примери.
- .
- Изход:
- За всяко циклично преместване на нов ред се отпечатва получената дума.
- Ограничения:
- 0 < n < 1000000
- 0 < m < 1000000
- -1 < k < 1000000
- 0 < N < 100
- Пример:
- abracadabra
- 4 1 0
- Floccinaucinihilipilification
- 10 20
- Решение на примера:
- cadabraabra
- bracadabraa
- abracadabra
- inihilipilificationFloccinauc
- ificationFloccinaucinihilipil
- */
Advertisement
Add Comment
Please, Sign In to add comment