Four arrays A, B, C and D with size MxN. B, C, D are stored in an array of pointers, and A is stored in a separated array. The task is to add the designated elements of A and the corresponding element from a chosen array of B, C, D, and output the result.
Take sample input as an example. Size of the arrays are 3 rows by 2 columns, initial values are as the form below. Input number “2” in the sixth line indicates D is chosen array and we want the sum of elements with two indices (1,0), (2,0)
Therefore, the answer is A(1,0)+D(1,0)+A(2,0)+D(2,0)=2+8+4+10=24
You will be provided with the following sample code, and asked to implement function "addition".
#include <stdio.h>
int addition(int*, int, int*[], int*, int);
int main(void) {
int a[50][50], b[50][50], c[50][50], d[50][50];
int index_to_add[20];
int *entry[3];
int i, j, m, n, array_num, num_ind;
scanf("%d %d", &m, &n);
for(i=0; i<m; i++)
for(j=0; j<n; j++)
scanf("%d", &a[i][j]);
for(i=0; i<m; i++)
for(j=0; j<n; j++)
scanf("%d", &b[i][j]);
for(i=0; i<m; i++)
for(j=0; j<n; j++)
scanf("%d", &c[i][j]);
for(i=0; i<m; i++)
for(j=0; j<n; j++)
scanf("%d", &d[i][j]);
scanf("%d", &array_num);
scanf("%d", &num_ind);
for(i=0; i<num_ind*2; i=i+2)
scanf("%d %d", &index_to_add[i], &index_to_add[i+1]);
entry[0] = &b[0][0];
entry[1] = &c[0][0];
entry[2] = &d[0][0];
printf("%d\n", addition(&a[0][0], array_num, entry, index_to_add, num_ind));
return 0;
}
int addition(int* ptr_a, int array_num, int* entry[], int* index_to_add, int num_ind){
/*your code*/
}
The first line is the size of arrays, M rows by N columns. The following four lines are initial values arranged by row major. The sixth line tells B, C or D is chose. The next line is the number of elements k to be summed. And the last k lines are the row and column indices of elements to be add. 0 < M, N < 50. 0 < k < 10. Index starts from 0.
An integer, sum of desired elements.