新手又来了,我为这篇文章的作业质量道歉。
我不确定我的标题是否有完美的意义,但我正试图用一个可变整数来放大(或缩小,如果必要的话)数组,我正在寻求帮助来理解它背后的数学和逻辑。
(这应该类似于扩大一个对象或减少一个因子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, "%i\t", 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, "%i\t", inArray[row][column]);
        }
    }
    fputs("\n", outfileptr);

    for(column = 0; column < SIZE; column++)
    {
        for(int m = 0; m < enn; m++)
        {
            fprintf(outfileptr, "%i\t", 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, "%i\t", inArray[row][column] );
            }
        }
        fputs( "\n", outfileptr );
    }
}
fclose( outfileptr );

但是你也可以用两个循环来完成。您的表有SIZE*enn行和SIZE*enn列:
for ( row = 0; row < SIZE*enn; row++ )
{
    for ( column = 0; column < SIZE*enn; column++ )
    {
        fprintf( outfileptr, "%i\t", inArray[row/enn][column/enn] );
    }
    fputs( "\n", outfileptr );
}
fclose( outfileptr );

注意:外部循环打印表的行。有SIZE行,每行必须打印enn次。每行以\n结尾。内部循环打印列,因为每行由列组成。有SIZE列,每行必须打印enn次。表中有SIZE * enn * SIZE * enn字段。

关于c - 如何通过增加或减少C中元素的频率来调整值数组的大小,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35160562/

10-10 16:27