2016-01-03 21 views
-1

我一直試圖解決的問題,其中,所述查詢是:爲什麼我的矩陣不會返回到屏幕的任何價值?


  1. 更換主對角線中的每個元素與它上面的所有元素的總和(在同一列中)以及位於右從它(在同一行)

  2. 更換相對對角線的每個元素與它下面的所有元素的總和(在同一列),並從它位於左(在同一行中)

我的問題:我不知道爲什麼輸入完成

後讀取矩陣

#include <stdio.h> 
int main(){ 

int i,j,m,k,a[100][100],new_mat[100][100]; 
scanf("%d%d",&m,&k); //m=rows, k=columns 

for (i = 0 ; i < m ; i++) 
    for (j = 0 ; j < k ; j++) 
     scanf("%d", &a[i][j]); 

//初步解決方案不顯示任何東西,但它也只是在最近首次覆蓋元素它,而不是下面的所有元素的總和向上

/* 
for(i=0;i<m;i++) 
{ 
    for(j=0;j<k;j++) 

     { 
    if(i==j) 
     if(j+1<k && i-1>=0) 
     {a[i][j]+=a[i][j+1]+a[i-1][j];} 

    if(i+j==m-1) 
     if(j-1>=0 && i+1<k) 
     {a[i][j]=a[i][j-1]+a[i+1][j];} 
    } 
} 
*/ 


所以,我試圖去夠所有的附加其餘元素週期

for(i=0;i<m;i++) 

{ 
    for(j=0;j<k;j++) 
    { 
      if(i==j) 
      for(;j+1<k,i-1>=0;j+1,i-1) 
      { 
       a[i][j]+=a[i][j+1]+a[i-1][j]; 
      } 


      if(i+j==m-1) 
      for(;j-1>=0,i+1<k;j-1,i+1) 
      { 
       a[i][j]=a[i][j-1]+a[i+1][j];} 
      } 
    } 


,然後打印結果:

for (i=0; i<m; i++) 
    for(j=0; j<k; j++) 
     printf("%d  ", a[i][j]); 
    printf("\n"); 
return 0;} 

然而,在進入矩陣,沒有出現和值沒有返回到屏幕

+0

「*的值不會返回到屏幕*」這可能會費沒有'的printf()'被調用。您可能想使用調試器來運行代碼。無論如何,這實際上應該是解決這些問題的第一步。 – alk

回答

2

我沒有深刻檢查該代碼看看它是否做你想做的事。我只是看了一般。

首先:約定。請for周圍加上括號。審查代碼會更容易。

 if(i+j==m-1) 
     { 
     for(;j-1>=0,i+1<k;j-1,i+1) 
     ... 
     } 

:兩個循環運行下去,因爲你不改變j和i! 你是什麼意思?

 for(;j-1>=0,i+1<k;j--,i++) 

:你真的應該學會與調試工作。使用適當的調試器,您將立即發現問題。

相關問題