Advertisement
wagner-cipriano

Trabalhando com ponteiros para alocação dinâmica de matrizes - Vetor de ponteiros de linhas separada

Jun 3rd, 2023
918
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.43 KB | Science | 0 0
  1. /*
  2. Trabalhando com ponteiros para alocação ou declaração dinâmica de matrizes
  3. Método 2: Vetor de ponteiros de linhas separadas (2d)
  4. */
  5.  
  6. #include <stdio.h>
  7. #include <stdlib.h>
  8.  
  9. void leMatriz(float **mat, int m, int n);
  10. void imprimeMatriz(float **mat, int m, int n);
  11.  
  12. int main() {
  13.   int m, n;
  14.   printf("Matrizes com ponteiros duplos:\n  Ler e imprimir Matriz\n\nInforme a qtde de linhas e colunas da Matriz: ");
  15.   scanf("%d %d", &m, &n);
  16.  
  17.   float **mat;
  18.  
  19.   // aloca um vetor de m ponteiros para linhas
  20.   mat = malloc (m * sizeof(int*));
  21.  
  22.   // aloca cada uma das linhas (vetores de n floats)
  23.   for(int i=0; i<m; i++)
  24.      mat[i] = malloc (n * sizeof(float));
  25.  
  26.   printf("\nPreencha os dados da matriz: \n");
  27.   leMatriz(mat, m, n);
  28.  
  29.   printf("\n\nDados da matriz: \n");
  30.   imprimeMatriz(mat, m, n);
  31.  
  32.   free(mat);
  33.   return 0;
  34. }
  35.  
  36. void leMatriz(float **mat, int m, int n) {
  37.   for(int i=0; i<m; i++)
  38.     for(int j=0; j<n; j++) {
  39.       printf("  m[%d][%d]: ", i, j);
  40.       scanf("%f", &mat[i][j]);
  41.     }
  42. }
  43.  
  44. void imprimeMatriz(float **mat, int m, int n) {
  45.   for(int i=0; i<m; i++) {
  46.     for(int j=0; j<n; j++)
  47.       printf("  %.2f", mat[i][j]);
  48.     printf("\n");
  49.   }
  50.   printf("\n");
  51. }
  52.  
  53.  
  54.  
  55.  
  56. /*
  57. Exemplos de entradas:
  58. 2 3  11 12 13  21 22 23
  59. 4 4  11 12 13 14   21 22 23 24  31 32 33 34    41 42 43 44
  60. 7 2  11 12  21 22  31 32  41 42  51 52  61 62  71 72
  61. 2 9  11 12 13 14 15 16 17 18 19  21 22 23 24 25 26 27 28 29
  62. */
  63.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement