#include <stdio.h> #include <math.h> #define N 2 #define M 2 void matrix_add(double c[][M], double a[][M], double b[][M]); main() { int i,j; double A[2][2] = {1.0,2.0,3.0,4.0}, /* a 2x2 mx with these entries */ B[2][2] = {1.0,2.0,3.0,4.0}, /* a 2x2 mx with these entries */ C[N][M]; /* we'll put the answer in C */ matrix_add(C, A, B); /* call the function to add A and B ... notice we are just using the array names eg A <-> &A[0] but we have specified all other column sizes for A in the function */ for (i=0;i<2;i++) for (j=0;j<2; j++) printf("%lf\n", C[i][j]) ; /* prints all the components of the result matrix C */ } void matrix_add(double c[][M], double a[][M], double b[][M]) { int i,j ; /* the for loops are exactly as before, we're just doing the calculation in a function rather than the main part of the program */ for (i=0;i<N;i++) { for (j=0;j<M; j++) { c[i][j] = a[i][j] + b[i][j] ; }} }