我是一个C++初学者。 ;我发现输入前的空格可以通过总行数-当前行数公式计算。 ; 但是,我没能弄清楚如何向后显示输入。 我知道C++不支持负索引。 谁能帮帮我吗? 我真的很感激你的帮助。 谢谢!
预期结果:
如果用户输入'ABCDEFG',则程序应显示:
A
ABA
ABCBA
ABCDCBA
ABCDEDCBA
ABCDEFEDCBA
ABCDEFGFEDCBA
我当前的结果:
A
ABC
ABCDE
ABCDEFG
ABCDEFGAB
ABCDEFGABCD
ABCDEFGABCDEF
代码:
#include <iostream>
#include <string>
int main(){
std::string user_input;
std::cout << "Please enter something" << std::endl;
std::cin >> user_input;
size_t total_row = user_input.size();
for(size_t row {1}; row <= total_row; row++){
for(size_t blank {total_row-row}; blank >= 1; blank--)
std::cout << " ";
if ( total_row <= 1){
std::cout << user_input;
}
else {
for(size_t i {0}; i < ((row * 2) - 1); i++)
if (i >= total_row){
std::cout << user_input.at(i - total_row);
}
else{
std::cout << user_input.at(i);
}
}
std::cout << std::endl;
}
}
好吧,在每一行,你在弦中向前走,直到中点,然后你向后走。 实现这一目标的两种方法:
i-total_row
处打印字符,而是更精确地计算需要在该位置打印哪个字符-例如使用与金字塔边缘的最小距离。祝你好运。