2016-12-17 73 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計數。

相關問題