如何通过增加或减少 C 中元素的频率来调整值数组的大小



新手又来了,我为这篇文章的作业质量道歉。

我不确定我的标题是否完全有意义,但我正在尝试通过变量整数放大(或在必要时缩小(数组,并且我正在寻求帮助以了解其背后的数学和逻辑。(这应该类似于放大对象或缩小系数 n。

例如,如果有一个 2x2 数组,如下所示:

0   1   
2   3

我希望能够将其乘以,例如n = 2,并以以下结果结束:

0   0   1   1   
0   0   1   1   
2   2   3   3   
2   2   3   3

我希望能够将 n 设置为任何值,并让它按此值"调整"数组大小(行和列应适当增长和收缩。我的代码没有像我想象的那样工作,我希望有人可以为我分解它(或引导我在哪里可以找到正确的信息(。这是我到目前为止能够执行的操作,当我增加或减少调整大小值时会失败。(我正在尝试将数组写入单独的文件(:

 #define enn 2     //resize value.
 //fill the infile with an array contents.
int inArray[SIZE][SIZE];
int count = 0, row, column;
//intialize the array.
for (row = 0; row < SIZE; row++)
{
    for(column = 0; column < SIZE; column++)
    {
        inArray[row][column] = count;
        count += 1;
    }
}
//write to the infile.
for (row = 0; row < SIZE; row++)
{
    for(column = 0; column < SIZE; column++)
    {
        fprintf(infileptr, "%it", inArray[row][column]);
    }
    fputs("n", infileptr);
} 
fclose(infileptr);
//write expanded array to outfile.
for (row = 0; row < SIZE; row++)
{
    for(column = 0; column < SIZE; column++)
    {
        for(int m = 0; m < enn; m++)
        {
            fprintf(outfileptr, "%it", inArray[row][column]);
        }
    }
    fputs("n", outfileptr);
    for(column = 0; column < SIZE; column++)
    {
        for(int m = 0; m < enn; m++)
        {
            fprintf(outfileptr, "%it", inArray[row][column]);
        }
    }
    fputs("n", outfileptr);
}
fclose(outfileptr);

感谢您的任何帮助!

要乘以数组的大小,您需要 4 个嵌套循环。打印enn次列是不够的,您还必须打印enn次行:

for ( row = 0; row < SIZE; row++ )
{ 
    for ( int n = 0; n < enn; n++ )
    {
        for ( column = 0; column < SIZE; column++ )
        {
            for ( int m = 0; m < enn; m++ )
            {
                fprintf( outfileptr, "%it", inArray[row][column] );
            }
        }
        fputs( "n", outfileptr );
    }
}
fclose( outfileptr );

但是您也可以使用 2 个循环来做到这一点。您的表格有 SIZE*enn 行和 SIZE*enn 列:

for ( row = 0; row < SIZE*enn; row++ )
{ 
    for ( column = 0; column < SIZE*enn; column++ )
    {
        fprintf( outfileptr, "%it", inArray[row/enn][column/enn] );
    }
    fputs( "n", outfileptr );
}
fclose( outfileptr );

注: 外部循环打印表的行。有SIZE行,每行必须打印enn次。每个行由 n 终止。内环打印列,因为每行由列组成。有SIZE个列,每个列必须为每行打印enn次。该表包含SIZE * enn * SIZE * enn字段。

最新更新