提问者:小点点

字母金字塔C++


我是一个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;
    }
}

共1个答案

匿名用户

好吧,在每一行,你在弦中向前走,直到中点,然后你向后走。 实现这一目标的两种方法:

  1. 使用两个内部循环而不是1:从0到行,然后从行1到0.
  2. 不是在i-total_row处打印字符,而是更精确地计算需要在该位置打印哪个字符-例如使用与金字塔边缘的最小距离。

祝你好运。

相关问题


MySQL Query : SELECT * FROM v9_ask_question WHERE 1=1 AND question regexp '(字母|金字塔|c++)' ORDER BY qid DESC LIMIT 20
MySQL Error : Got error 'repetition-operator operand invalid' from regexp
MySQL Errno : 1139
Message : Got error 'repetition-operator operand invalid' from regexp
Need Help?