如何减少每行输出空白以实现指定斜杠图案?
问题与解决:实现递减缩进的斜线图案
问题详情
当前输出(输入为3时):
/\ /\ /\
期望输出(输入为3时):
/\ /\ /\
当前使用的C++代码:
cout << "What size? "; int input; cin >> input; int counter = 1; while(counter <= input){ std::cout << std::setfill(' ') << std::setw(input) << "/" << "\\" << std::endl; counter++; }
问题:设置输出宽度为输入值来输出图案,但不知道如何逐行减少空白以达成目标图案。
解决方案
问题出在你每次都固定用input作为setw的参数,导致每行缩进一致。要实现逐行减少一个空格的效果,只需把setw的参数改成input - counter + 1即可——每循环一次counter加1,输出宽度就减1,缩进也随之递减。
修改后的代码:
cout << "What size? "; int input; cin >> input; int counter = 1; while(counter <= input){ std::cout << std::setfill(' ') << std::setw(input - counter + 1) << "/" << "\\" << std::endl; counter++; }
解释:当counter为1时,宽度是3-1+1=3,对应第一行的2个空格+/\;counter为2时,宽度是3-2+1=2,对应1个空格+/\;counter为3时,宽度是3-3+1=1,对应0个空格+/\,完全匹配期望的输出效果。
内容的提问来源于stack exchange,提问作者Kaka
相关产品推荐
相关产品推荐

