User Tools

Site Tools


cs:c_language:functions_and_matrices_1
Return to Home page

Differences

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

Link to this comparison view

cs:c_language:functions_and_matrices_1 [2019/02/26 14:35]
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 (''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

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

Privacy Policy