
Дана строка, содержащая только английские буквы (большие и маленькие). Добавить открывающиеся и
закрывающиеся скобки по следующему образцу: "example" -> "(e(x(a(m)p)l)e)" (До середины добавлены открывающиеся скобки, после середины – закрывающиеся. В случае, когда длина строки четна в скобках, расположенных в середине, должно быть 2 символа. ("card -> (c(ar)d", но не "(c(a()r)d)"). на с++ пж и рекурсией желательно

Ответы на вопрос

#include <iostream>
using namespace std;
int main()
{
string str;
cin >> str;
if (str.length()%2 == 1)
{
for (int i; i < str.length(); i++)
{
if (i < (float)str.length()/2) {cout << "(" << str[i];};
if (i > (float)str.length()/2) {cout << str[i] << ")";};
if ((float)i+0.5 == (float)str.length()/2) {cout << ")";};
}
}
else
{
for (int i; i < str.length(); i++)
{
if (i < (float)str.length()/2) {cout << "(" << str[i];};
if (i >= (float)str.length()/2) {cout << str[i] << ")";};
}
}
}



Для решения этой задачи на C++ с использованием рекурсии, вы можете написать следующий код. Этот код разбивает строку пополам и рекурсивно добавляет скобки к обоим половинам.
cpp#include <iostream>
#include <string>
std::string addBrackets(const std::string& input, int start, int end) {
if (start > end) {
return "";
}
if (start == end) {
return std::string(1, input[start]);
}
int middle = (start + end) / 2;
std::string leftHalf = addBrackets(input, start, middle);
std::string rightHalf = addBrackets(input, middle + 1, end);
// Добавляем открывающую скобку в середине
std::string result = "(" + leftHalf + rightHalf + ")";
return result;
}
std::string addBrackets(const std::string& input) {
return addBrackets(input, 0, input.size() - 1);
}
int main() {
std::string input = "example";
std::string result = addBrackets(input);
std::cout << result << std::endl;
return 0;
}
Этот код сначала вызывает функцию addBrackets
с начальными индексами строки, а затем рекурсивно разделяет строку на две части и добавляет скобки вокруг них. Он работает как для строк с четным, так и для строк с нечетным числом символов.
Пример вывода:
css(e(x(a(m)p)l)e)


Похожие вопросы







Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili