C - 打印行和列

问题描述

请向我解释如何让程序在每次通过循环以增加 col 时重置 col

我想打印由 rows 控制的 X 数量的 colsLENGTH

代码显然是一团糟,我不得不展开循环。我的问题是如何在那里正确循环???

实际上看起来很简单,但我真的无法理解它。 目前,我想要做的就是将输出变为如下所示;

|----------------------------------------------------------------
| row: 0,col: 0| row: 0,col: 1| row: 0,col: 2| row: 0,col: 3|
|----------------------------------------------------------------
| row: 1,col: 0| row: 1,col: 1| row: 1,col: 2| row: 1,col: 3|
|----------------------------------------------------------------
| row: 2,col: 0| row: 2,col: 1| row: 2,col: 2| row: 2,col: 3|
|----------------------------------------------------------------
| row: 3,col: 0| row: 3,col: 1| row: 3,col: 2| row: 3,col: 3|
|----------------------------------------------------------------

到目前为止,它把它打印出来“一切都很好”(或多或少),但我写的太愚蠢了,显然...... 是的,抱歉像隐士一样编码, 并感谢大家抽出时间! 我绝对相信你知道如何做得更好,也许可以解释我在这里遗漏了什么。

干杯!

float LENGTH    = 0.0f;
int row = 0;
int col =0;

int main(int argc,char** argv)
{
    LENGTH = 8.0f;
    
    
    row = 0;
    col =0;
    
    for (;row < LENGTH; row++)
    {
        for (;col <= LENGTH; col++)
        {
            for (;row < LENGTH; row++)
            {
                for (;col <= LENGTH; col++)
                {
                    printf("| r:%4i,c:%4i ",row,col);
                }
            }
            printf("\n");
            row = 1;
            col = 0;
            for (;row < LENGTH; row++)
            {
                for (;col <= LENGTH; col++)
                {
                    printf("| r:%4i,col);
                }
            }
            printf("\n");
            row = 2;
            col = 0;
            for (;row < LENGTH; row++)
            {
                for (;col <= LENGTH; col++)
                {
                    printf("| r:%4i,col);
                }
            }
            printf("\n");
            row = 3;
            col = 0;
            for (;row < LENGTH; row++)
            {
                for (;col <= LENGTH; col++)
                {
                    printf("| r:%4i,col);
                }
            }
            printf("\n");
            row = 4;
            col = 0;
            for (;row < GRID_LENGTH; row++)
            {
                for (;col <= LENGTH; col++)
                {
                    printf("| r:%4i,col);
                }
            }
            printf("\n");
            row = 5;
            col = 0;
            for (;row < LENGTH; row++)
            {
                for (;col <= LENGTH; col++)
                {
                    printf("| r:%4i,col);
                }
            }
            printf("\n");
            row = 6;
            col = 0;
            for (;row < LENGTH; row++)
            {
                for (;col <= LENGTH; col++)
                {
                    printf("| r:%4i,col);
                }
            }
            printf("\n");
            row = 7;
            col = 0;
            for (;row < LENGTH; row++)
            {
                for (;col <= LENGTH; col++)
                {
                    printf("| r:%4i,col);
                }
            }
            printf("\n");
            row = 8;
            col = 0;
            for (;row <= LENGTH; row++)
            {
                for (;col <= LENGTH; col++)
                {
                    printf("| r:%4i,col);
                }
            }
            printf("\n");
        }
    }
    
    printf("\n");
    return 0;
}

存在 c89 标记,因为程序需要在该配置中运行。

这样做的原因是,我的计划是动态分配 一些向量。为此,我不想使用可变长度数组。

假设我们想要创建一个网格,例如棋盘或国际象棋盘或类似的东西。网格应该以世界为中心 (x=0,y=0,z=0)。 所以,如果网格只有 LENGTH = 1,那么我们仍然需要 4 个向量来绘制 4 条线,至少得到一个四边形...... 但是,如果函数的用户使用

调用它

LENGTH = 1,

那么我们需要给每个长度加1 (length +1) 以便当用户使用 LENGTH = 1 调用它时 我们实际上至少得到了 2x2 个向量。

在下面的代码中,我不确定 vector 是否应该命名为 vector_array,因为我分配了我想要的所有向量。

size_t count = (((length +1) * (length +1)));
float *vector;
vector = NULL;
vector = calloc(count,sizeof(float) * 3);

我的问题是,如何分配向量数组,以及我们从循环中得到的位置,以便 rowcol 都像下面的 row = -length 和 { {1}}

请忽略并原谅我,我将 col = -lengthLENGTH 互换使用..它们的意思完全相同,但 length 应该用于将其初始化为 1。 ..

LENGTH

我无法更好地解释我尝试做的事情。 我是初学者,我把 C 作为业余爱好...

非常感谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)