Member 14081190 Ответов: 2

Перестановка символов C++


Я пытаюсь написать программу на C++, которая берет первый символ пользовательского ввода и помещает его в конец. Программное обеспечение будет делать это за Н зубцов

Напр..

Пользовательский ввод: "стек"

- Сколько раз я должен вращаться?

Ввод Данных Пользователем: 2

Вывод: 'ackst'

Что я уже пробовал:

#include <iostream>
#include <string>
using namespace std;

int main()
{
	int K;

	string S;
	cout << "------------------------------------"<<endl;
	cout << "Enter a word: ";
	cin >> S;
	cout << "------------------------------------"<<endl;

	if(S.length() >1000)
	{
	cout << "------------------------------------"<<endl;
	cout << "Too many characters"<<endl;
	cout << "------------------------------------"<<endl;
	}
	
	if(S.length() ==1)
	{
	cout << "------------------------------------"<<endl;
	cout << "Not enough characters"<<endl;
	cout << "------------------------------------"<<endl;
	}
	
	if (S.length() <=1000 && 
  S.length() !=1)

        {
	cout << "Times of rotation: ";
	cin >> K
	}
}

2 Ответов

Рейтинг:
17

Leo Chapiro

Попробовать это:

if (S.length() <= 1000 && S.length() != 1)
{
	cout << "Times of rotation: ";
	cin >> K;

	int L = S.length();

	for (int ii = 0; ii < K; ii++)
	{
		char chFirst = S[0];

		for(int i = 0; i < L - 1; i++)
			S[i] = S[i+1];

		S[L - 1] = chFirst;
	}
			

	cout << S;
}


Краткое объяснение:
- мы сохраняем первый символ
- цикл n - раз, где n-вращение.
- внутренняя петля: замените первый символ на второй, второй - на третий и так далее
- установите первый символ В и строки


Member 14081190

Спасибо! Работает просто отлично, а также Спасибо за краткое объяснение. :)

Leo Chapiro

Добро пожаловать! Подумайте о том, чтобы отметить ответ как "принятый", если он работает, он может помочь другим пользователям.

Рейтинг:
0

CPallini

В альтернативном подходе вы можете использовать string::substr

#include <iostream>
#include <string>
using namespace std;


void rotate (string & s, size_t r)
{
  r %= s.length();
  if ( r == 0) return;
  s = s.substr(r,s.length()-r) + s.substr(0,r);
}

void show_decorated(const string & message)
{
  cout << "------------------------------------\n";
  cout << message << '\n';
  cout << "------------------------------------\n";
}

int main ()
{
  int K;
  string S;
  cout << "------------------------------------\n";
  cout << "Enter a word: ";
  cin >> S;
  cout << "------------------------------------\n";

  if( S.length() > 1000)
  {
    show_decorated( "Too many characters" );
    return -1;
  }
  if(S.length() <= 1)
  {
    show_decorated("Not enough characters");
    return -1;
  }

  cout << "Times of rotation: ";
  cin >> K;
  rotate(S,K);
  show_decorated(S);
  cout << endl;

}