wagner-cipriano

Array parameter as pointer to pointer into a function in C++

Jun 20th, 2020
244
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.76 KB | None | 0 0
  1. /*
  2. Trabalhando com ponteiros em funções - Array 2D como ponteiro duplo
  3. Passando a matriz como ponteiro para ponteiro (int ** arr)
  4. Usando operador new, podemos alocar dinamicamente a memória em tempo de execução para o array.
  5. ---
  6. Este método passa a referência da matriz como ponteiro duplo para a função: linhas e colunas.
  7. */
  8. #include <iostream>
  9. using namespace std;
  10.  
  11. void leMatriz(float **mat, int m, int n);
  12. void imprimeMatriz(float **mat, int m, int n);
  13. float somaDiagonal(float **mat, int m);
  14.  
  15. int main(){
  16.     float somadp;
  17.     //Dimensões da Matriz
  18.     int m, n;
  19.     cout << "Matrizes com ponteiros duplos:\n  Ler e imprimir Matriz\n\nInforme a qtde de linhas e colunas da Matriz: ";
  20.     cin >> m >> n;
  21.  
  22.     //Ponteiro para a matriz: array 2D
  23.     float **notas = new float*[m];
  24.     //Inicialização de 1 ponteiro para cada linha da matriz
  25.     for(int i=0; i<n; i++)
  26.         notas[i] = new float[n];
  27.  
  28.     cout << "\nPreencha os dados da matriz: " << endl;
  29.     leMatriz(notas, m, n);
  30.  
  31.     cout << "\nDados da matriz: " << endl;
  32.     imprimeMatriz(notas, m, n);
  33.  
  34.     somadp = somaDiagonal(notas, m);
  35.     cout << "\nSoma DP: " << somadp << endl;
  36.  
  37.     return 0;
  38. }
  39.  
  40. void leMatriz(float **mat, int m, int n) {
  41.     for(int i=0; i<m; i++) {
  42.         for(int j=0; j<n; j++) {
  43.             cout << "  m[" << i << "][" << j << "]: ";
  44.             cin >> mat[i][j];
  45.         }
  46.     }
  47. }
  48.  
  49. void imprimeMatriz(float **mat, int m, int n) {
  50.     for(int i=0; i<m; i++) {
  51.         for(int j=0; j<n; j++) {
  52.             cout << " " << mat[i][j];
  53.         }
  54.         cout << endl;
  55.     }
  56.     cout << endl;
  57. }
  58.  
  59.  
  60. float somaDiagonal(float **mat, int m) {
  61.     float soma=0;
  62.     for(int i=0; i<m; i++) {
  63.         soma += mat[i][i];
  64.     }
  65.     return soma;
  66. }
Add Comment
Please, Sign In to add comment