cs:c_language:functions_and_matrices_1

Return to Home page

# Differences

If you found any error, or if you want to partecipate to the editing of this wiki, please contact: admin [at] skenz.it

**You can reuse, distribute or modify the content of this page, but you must cite in any document (or webpage) this url: https://www.skenz.it/cs/c_language/functions_and_matrices_1?rev=1551188115&do=diff**

This shows you the differences between two versions of the page.

— |
cs:c_language:functions_and_matrices_1 [2019/02/26 14:35] (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 (''nr'' and ''nc'' are the number of matrix rows and columns, respectively). The prototype of the function is the following: | ||

+ | <code C> | ||

+ | void change_sign(int matr[][C], int nr, int nc); | ||

+ | </code> | ||

+ | * 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 (''main'') must print the matrix before and after the transformation performed by the function ''change_sign''. | ||

+ | |||

+ | **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 <stdio.h> | ||

+ | |||

+ | #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("Initial matrix\n"); | ||

+ | for(i=0; i<R; i++){ | ||

+ | for(j=0; j<C; j++){ | ||

+ | printf("%3d", m[i][j]); | ||

+ | } | ||

+ | printf("\n"); | ||

+ | } | ||

+ | |||

+ | change_sign(m, R, C); | ||

+ | |||

+ | printf("Final matrix, with even index rows changed of sign\n"); | ||

+ | for(i=0; i<R; i++){ | ||

+ | for(j=0; j<C; j++){ | ||

+ | printf("%3d", m[i][j]); | ||

+ | } | ||

+ | printf("\n"); | ||

+ | } | ||

+ | |||

+ | 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]; | ||

+ | } | ||

+ | } | ||

+ | } | ||

+ | } | ||

+ | </file> |

If you found any error, or if you want to partecipate to the editing of this wiki, please contact: admin [at] skenz.it

/web/htdocs/www.skenz.it/home/data/pages/cs/c_language/functions_and_matrices_1.txt ยท Last modified: 2019/02/26 14:35 (external edit)