Для того чтобы поменять местами первое и последнее слово в строке в C++, можно использовать следующий алгоритм:
1. Считываем строку с помощью функции std::getline
и сохраняем ее в переменную inputString
.
2. Определяем индекс первого пробела в строке с помощью функции find_first_of
. Это можно сделать следующим образом: int firstSpaceIndex = inputString.find_first_of(' ');
.
3. Если первый пробел не был найден, то в строке только одно слово, поэтому можно завершить программу или распечатать сообщение об ошибке.
4. Получаем подстроку, содержащую первое слово, используя метод substr
: std::string firstWord = inputString.substr(0, firstSpaceIndex);
.
5. Ищем последний пробел в строке с помощью функции find_last_of
: int lastSpaceIndex = inputString.find_last_of(' ');
.
6. Получаем подстроку, содержащую последнее слово: std::string lastWord = inputString.substr(lastSpaceIndex + 1);
.
7. Заменяем первое слово в исходной строке последним словом: inputString.replace(0, firstSpaceIndex, lastWord);
.
8. Заменяем последнее слово в исходной строке первым словом: inputString.replace(lastSpaceIndex + 1, inputString.length() - lastSpaceIndex, firstWord);
.
9. Выводим измененную строку: std::cout << inputString << std::endl;
.
Вот полный пример кода:
#include <iostream> #include <string> int main() { std::string inputString; std::getline(std::cin, inputString); int firstSpaceIndex = inputString.find_first_of(' '); if (firstSpaceIndex == std::string::npos) { std::cout << "Ошибка: в строке только одно слово!" << std::endl; return 0; } std::string firstWord = inputString.substr(0, firstSpaceIndex); int lastSpaceIndex = inputString.find_last_of(' '); std::string lastWord = inputString.substr(lastSpaceIndex + 1); inputString.replace(0, firstSpaceIndex, lastWord); inputString.replace(lastSpaceIndex + 1, inputString.length() - lastSpaceIndex, firstWord); std::cout << inputString << std::endl; return 0; }
После запуска программы, она будет ожидать ввода строки с клавиатуры. Затем она выведет полученную строку, в которой переставлены первое и последнее слово. Если введена строка с только одним словом, программа выведет сообщение об ошибке.