Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Trabalhando com ponteiros em funções - Array 2D como ponteiro duplo
- Passando a matriz como ponteiro para ponteiro (int ** arr)
- Usando operador new, podemos alocar dinamicamente a memória em tempo de execução para o array.
- ---
- Este método passa a referência da matriz como ponteiro duplo para a função: linhas e colunas.
- */
- #include <iostream>
- using namespace std;
- void leMatriz(float **mat, int m, int n);
- void imprimeMatriz(float **mat, int m, int n);
- float somaDiagonal(float **mat, int m);
- int main(){
- float somadp;
- //Dimensões da Matriz
- int m, n;
- cout << "Matrizes com ponteiros duplos:\n Ler e imprimir Matriz\n\nInforme a qtde de linhas e colunas da Matriz: ";
- cin >> m >> n;
- //Ponteiro para a matriz: array 2D
- float **notas = new float*[m];
- //Inicialização de 1 ponteiro para cada linha da matriz
- for(int i=0; i<n; i++)
- notas[i] = new float[n];
- cout << "\nPreencha os dados da matriz: " << endl;
- leMatriz(notas, m, n);
- cout << "\nDados da matriz: " << endl;
- imprimeMatriz(notas, m, n);
- somadp = somaDiagonal(notas, m);
- cout << "\nSoma DP: " << somadp << endl;
- return 0;
- }
- void leMatriz(float **mat, int m, int n) {
- for(int i=0; i<m; i++) {
- for(int j=0; j<n; j++) {
- cout << " m[" << i << "][" << j << "]: ";
- cin >> mat[i][j];
- }
- }
- }
- void imprimeMatriz(float **mat, int m, int n) {
- for(int i=0; i<m; i++) {
- for(int j=0; j<n; j++) {
- cout << " " << mat[i][j];
- }
- cout << endl;
- }
- cout << endl;
- }
- float somaDiagonal(float **mat, int m) {
- float soma=0;
- for(int i=0; i<m; i++) {
- soma += mat[i][i];
- }
- return soma;
- }
Add Comment
Please, Sign In to add comment