2016-12-17 101 views
-2

我需要制定一个算法来计算遵循特定步骤的行列式。有没有办法让迭代器每3次增加一次?

其中一个步骤是我必须(在列上)将每列与矩阵中的第一个元素(大小为nxn)相乘并将其与列中的第一个元素相除(显然从第二列开始)

例如,这 1 变换在此 2

我的代码的想法是一样的东西

for(i=start+1;i<end;i++) 
{for(j=start;j<end;++) 
{ 
    if(matrix[start][start]!=0) 
    { 
    matrix[i][j]=matrix[i][j]*(matrix[start][start]/matrix[start][j])  



    }}} 

其中start = 0end = n

但我希望我每增加3个操作,以便可以在列上操作。

让说得更为直接:

我想J可走下来的柱上进行(虽然我不修改),当它到达最后一列的我增加一个,并进行操作下一列。

+0

现在,你正在将'i'增加1.这就是'++'操作符所做的。那么你觉得你可以增加三倍?你如何将3添加到循环的“外部”*中? –

+0

我的想法是,我想让j在柱子上下来(当我没有修改时),并且当它到达列的末尾时,我会增加一个,并在下一列进行操作。 – THESCARSCER

回答

0

您可以通过嵌套循环来完成此操作,就像您已经在做的那样。例如:

int N=3; /* size of matrix */ 
for (int j=0; j < N; j++) { /* for each column... */ 
    printf("starting column %d\n", j); 
    for (int i=1; i < N; i++) { /* for each row except the first one... */ 
     printf(" do something i=%d j=%d\n", i, j); 
    } 
} 

它最终会打印:

starting column 0 
    do something i=1 j=0 
    do something i=2 j=0 
starting column 1 
    do something i=1 j=1 
    do something i=2 j=1 
starting column 2 
    do something i=1 j=2 
    do something i=2 j=2 
1

相反的i++,您可以使用i += 3如果你想要做的是通过循环3S计数。

相关问题