2016-04-24 56 views
1

我需要帮助完成作业。 我需要构建一个函数来计算数组中的成员总和。 我有一个4X4数组,我需要计算从第一行开始说成员的总数。 我需要为该行的给定数量的成员在行上的总和的每个组合执行此操作,并检查它是否与用户给我的总数相匹配。我需要检查(1 + 2 + 3 + 4),(2 + 3 + 4),(3 + 4),(1),(2),(3)如果行是1 2 3 4 ,(4) 我知道如何检查(1)(2)(3)(4) 问题是,一旦我到达第一个总和(1 + 2 + 3 + 4)的末尾,我就不会如何在不使用静态变量的情况下返回开始总和(2 + 3 + 4)的索引。 我的代码是这样的:返回到c中数组的前一个成员

bool row_sum(int length,int sum, int mat[N][N]) 
{ 
int temp_sum=0, i=0, j=0, cnt1=0; 
while (i<N) 
{ 
    while(j<N) 
    { 
     cnt1++; 
     temp_sum += mat[i][j]; 
     if ((temp_sum==sum) && (cnt1==length)) 
     { 
      return 1; 
     } 
     else if (temp_sum<sum) 
     { 
      j++; 
      continue; 
      } 
     else if (temp_sum>sum) 
     { 
      if (j==N-1) 
      { 
       temp_sum=0; 
       cnt1=0; 
       j=N; 
       break; 
      } 
      else 
      { 
      temp_sum=0; 
      j=(cnt1-j); 
      cnt1=0; 
      } 
     } 
     else if ((temp_sum<sum) && (cnt1=length)) 
     { 
      temp_sum=0; 
      j=(cnt1-j); 
      cnt1=0; 
     } 
    } 
i++; 
} 
    return 0; 
} 

我希望我清楚..这很难说明问题。 谢谢, Adi。

回答

0

的阵列存储在存储元件(炭,INT,...)的序列,见How is the array stored in memory?

您可以访问使用指针数组中的元素(参见指针算术https://www.cs.umd.edu/class/sum2003/cmsc311/Notes/BitOp/pointer.html)或直接使用解决,请参阅本http://www.tutorialspoint.com/cprogramming/c_multi_dimensional_arrays.htm

 0 1 2 3 

0 a b c d 

1 e f g h 

2 i j k l 

3 m n o p 

所以,如果你想获得字母“K”的char阵列上方使用在如果你想得到字母'i'使用char c = array[2][0];