如何在c ++的循环中编写多个列?

时间:2015-09-24 03:58:15

标签: c++ file writing

假设我有一个循环:

for(int i=1; i<=1024; i++)

我想填充128列(不是行!)的文件,因此第一列包含1到8的数字,第二列包含9到16的数字,依此类推。

请帮助

3 个答案:

答案 0 :(得分:0)

最简单的方法是创建两个循环 - 第一个按行排列并按列嵌套 - 然后使用简单的数学表达式计算数字。 E.g:

    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更改为其他流。

答案 1 :(得分:0)

每列的项目仅为8i到8i + 7。你可以编写多个循环。for(int i = 0; i< 128;i++) for(int j = 0; j <8;j++) int k = 8* i+ j;

答案 2 :(得分:0)

Double doubleValue=0.0001;    
DecimalFormat f = new DecimalFormat("##.0000");
String formattedValue = f.format(doubleValue);
BigDecimal bigDecimalValue = new BigDecimal(formattedValue);
bigDecimalValue.stripTrailingZeros();

说明: 因为我们需要8行所以我们调用函数write_in_file 8次。每次函数write_in_file都会在文件中写入128个条目。