2016-04-24 2 views
1

Мне нужна помощь с моей домашней работой. Мне нужно построить функцию, которая вычисляет сумму элементов в массиве. У меня есть массив 4X4, и мне нужно вычислить сумму let, чтобы сказать членам из первой строки. Мне нужно сделать это для каждой комбинации сумм в строке для заданного количества членов из этой строки и проверить, соответствует ли она сумме, которую дали мне пользователи. , если строка 1 2 3 4. Мне нужно проверить (1 + 2 + 3 + 4), (2 + 3 + 4), (3 + 4), (1), (2), (3) , (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

Массив хранится в виде последовательности элементов (CHAR, 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 массиве над использованием char c = array[2][2];, если вы хотите получить письмо «i» использовать char c = array[2][0];

Смежные вопросы