У меня есть идея, как это решить, но я не могу это сделать.
Если вы введете (
выход будет /
, Если вы введете )
выход будет \
,
Это означает, что если ввод: ()
Выход должен быть: /\
, Я могу решить это, но если на входе больше ((((
он должен идти как по лестнице и идти вверх, но если у меня есть ))))
она должна идти как лестница, как пирамида. У меня есть идея решения. Введите строку и с помощью for и если замените и выведите ее. Я вывел правильные символы, но не смог получить вывод «лестницы». Если я введу (())
, Выход //\\
но это должно идти как пирамида.
Вот мой код:
#include <iostream>
#include <vector>
using namespace std;
int main()
{
string a;
cin >> a;
for (int i = 0; i < a.size(); i++) {
if (a[i] == '(') {
cout << "/";
} else if (a[i] == ')') {
cout << "\\";
}
}
return 0;
}
К сожалению, нет способа достичь этого в одном цикле, потому что вам нужно знать высоту вашей пирамиды (или число ‘()’ во входной строке). Вот как вы это делаете:
#include <iostream>
#include <algorithm>
#include <string>
int main() {
std::string input;
std::cin >> input;
int height = std::count(input.begin(), input.end(), '(');
for ( int i = 0; i < height; ++i )
std::cout << std::string(height - i, ' ') << "/" << std::string(i * 2, ' ') << "\\\n";
return 0;
}
Конечно, это только основы, чтобы показать вам, как напечатать пирамиду. Вам необходимо проверить правильность ввода (количество ‘(‘ == количество ‘)’, совпадающих пар ‘((()))’, а не ‘(()) ()’ и т. Д.).
Других решений пока нет …