[英]How to write multiple columns in a loop in c++?
假设我有一个循环:
for(int i=1; i<=1024; i++)
我想用 128 列(不是行!)填充一个文件,所以第一列包含从 1 到 8 的数字,第二列包含从 9 到 16 的数字,依此类推。
最简单的方法是创建两个循环 - 第一个按行并按列嵌套 - 然后用简单的数学表达式计算数字。 例如:
for(int line = 0; line < 8; line++)
{
for( int col = 0; col < 128; col++)
{
cout << setw(5) << line + col * 8 + 1;
}
cout << endl;
}
setw()
具有参数 5 以使数字从 1 到 1024 的列具有相同的宽度
编辑:
如果您只想使用一个for
循环并且与您在问题中给出的完全一样,您可以使用更复杂的数学表达式。 首先,让我们计算行数为(i-1) / 128
(数字从 0 开始)和列数为(i-1) % 128
(数字从 0 到 127)。 现在您可以使用额外的换行条件输出进行以下循环:
for(int i=1; i<=1024; i++)
{
cout << setw(5) << ( 1 + 8 * ((i-1) % 128) ) + ( (i-1) / 128 );
if( i % 128 == 0 ) // new line once per 128 numbers
cout << endl;
}
当然,如果你想制作文件,你应该对输出做一些事情 - 将标准输出重定向到文件或将cout
更改为其他流。
每列的项目只有 8i 到 8i+7。 您可以编写多个循环。 for(int i = 0; i< 128;i++) for(int j = 0; j <8;j++) int k = 8* i+ j;
void write_in_file( ofstream &fout, int start){
for(int i = 1; i <= 128; i++){
fout<<start <<"\t";
start+=8;
}
fout<<"\n";
}
int main(){
ofstream fout;
fout.open("out.txt");
for(int i=1;i<=8;i++){
write_in_file(fout,i);
}
}
解释:因为我们需要 8 行,所以我们调用函数 write_in_file 8 次。 每次函数 write_in_file 在文件中写入 128 个条目。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.