циклы — линия диаграммы C ++

У меня есть идея, как это решить, но я не могу это сделать.

Если вы введете ( выход будет /, Если вы введете ) выход будет \,

Это означает, что если ввод: ()Выход должен быть: /\, Я могу решить это, но если на входе больше (((( он должен идти как по лестнице и идти вверх, но если у меня есть )))) она должна идти как лестница, как пирамида. У меня есть идея решения. Введите строку и с помощью 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;
}

-1

Решение

К сожалению, нет способа достичь этого в одном цикле, потому что вам нужно знать высоту вашей пирамиды (или число ‘()’ во входной строке). Вот как вы это делаете:

#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;

}

Конечно, это только основы, чтобы показать вам, как напечатать пирамиду. Вам необходимо проверить правильность ввода (количество ‘(‘ == количество ‘)’, совпадающих пар ‘((()))’, а не ‘(()) ()’ и т. Д.).

-1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector