This shows you the differences between two versions of the page.
— |
cs:c_language:functions_and_matrices_1 [2020/11/26 23:18] (current) |
||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== Functions and Matrices (Example 1) ====== | ||
+ | **Consepts: | ||
+ | Passage of a Matrix to a function (matrices in C are passed to a function by reference) | ||
+ | **Text:**\\ | ||
+ | Realize a function that: | ||
+ | * receives as parameters a matrix and its dimension ('' | ||
+ | <code C> | ||
+ | void change_sign(int matr[][C], int nr, int nc); | ||
+ | </ | ||
+ | * the function must change the sign of all the elements of the rows of the matrix that have an //even// row index (i.e, rows with indexes 0, 2, 4, 6,...) | ||
+ | |||
+ | The calling function ('' | ||
+ | |||
+ | **Solution: | ||
+ | <file C matrici_funzioni_1.c> | ||
+ | /* Realize a function that receives as parameters a matrix and its dimension, i.e., the number of rows and columns. | ||
+ | The function must change the sign of all the elements of the rows of the matrix that have an even row index | ||
+ | (i.e, rows with indexes 0, 2, 4, 6,...). */ | ||
+ | |||
+ | #include < | ||
+ | |||
+ | #define R 3 | ||
+ | #define C 4 | ||
+ | |||
+ | void change_sign(int matr[][C], int nr, int nc); | ||
+ | |||
+ | int main(){ | ||
+ | int m[R][C] = {{1, 2 , 3, 4}, {-1, -2, 3, 4}, {1, -2, 3, -4}}; | ||
+ | int i, j; | ||
+ | |||
+ | printf(" | ||
+ | for(i=0; i<R; i++){ | ||
+ | for(j=0; j<C; j++){ | ||
+ | printf(" | ||
+ | } | ||
+ | printf(" | ||
+ | } | ||
+ | |||
+ | change_sign(m, | ||
+ | |||
+ | printf(" | ||
+ | for(i=0; i<R; i++){ | ||
+ | for(j=0; j<C; j++){ | ||
+ | printf(" | ||
+ | } | ||
+ | printf(" | ||
+ | } | ||
+ | |||
+ | return 0; | ||
+ | } | ||
+ | |||
+ | |||
+ | void change_sign(int matr[][C], int nr, int nc){ | ||
+ | int r, c; | ||
+ | | ||
+ | for(r=0; r<nr; r++) { | ||
+ | if(r%2==0) { | ||
+ | for(c=0; c<nc; c++) { | ||
+ | matr[r][c] = -1*matr[r][c]; | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | </ |