C++ 如何减少C++;
如何将以下程序减少到2个for循环和1个print语句:C++ 如何减少C++;,c++,for-loop,C++,For Loop,如何将以下程序减少到2个for循环和1个print语句: for (int i = 1; i <= iter; i++) { for (int j= 1; j <= row; j++) { printf("*"); for (int k = 1; k <= col; k++) { printf("_&qu
for (int i = 1; i <= iter; i++)
{
for (int j= 1; j <= row; j++)
{
printf("*");
for (int k = 1; k <= col; k++)
{
printf("_");
}
printf("*\n");
}
printf("\n\n\n");
}
for(int i=1;i
- 您可以使用连接所有要打印的内容,以减少打印语句
- 您可以使用构造函数
basic\u字符串(size\u type count,CharT ch,const Allocator&alloc=Allocator());
来消除最里面的for
循环
std::string ret=”“;
对于(inti=1;i您可以使用乘法和除法中的rest合并任何循环计数(只是乘法不能溢出)
void f(int iter、int行、int列){
对于(int i=0;i
使用range-v3库,您根本不需要任何循环
namespace rv = ranges::views;
auto line = "*" + std::string(col, '_') + "*\n";
auto block = rv::repeat_n(line, row) | rv::join;
auto result = rv::repeat_n(block, iter) | rv::join("\n\n\n");
std::cout << (result | ranges::to<std::string>);
namespace rv=ranges::views;
auto line=“*”+std::字符串(列,'.')+“*\n”;
自动闭塞=rv::重复(行、行)| rv::连接;
自动结果=rv::重复(块,iter)| rv::连接(“\n\n\n”);
为什么只有两个循环?三个循环有什么问题?为什么有两个循环?为什么不减少到一个或零?我的老师只要求我们写三个说明,所以她要求我们这样写。嘿,我已经思考了一个多小时了。我不想打扰你,但你能简单地解释一下,这样我就能理解为什么和它是如何工作的。
void f(int iter, int row, int col) {
for (int i = 0; i < iter * row * col; i++) {
printf("%s%s%s%s",
i % col == 0 ? "*" : "",
"_",
i % col == col - 1 ? "*\n" : "",
i % (row * col) == (row * col) - 1 ? "\n\n\n" : "");
}
}
namespace rv = ranges::views;
auto line = "*" + std::string(col, '_') + "*\n";
auto block = rv::repeat_n(line, row) | rv::join;
auto result = rv::repeat_n(block, iter) | rv::join("\n\n\n");
std::cout << (result | ranges::to<std::string>);