Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Trabalhando com ponteiros para alocação ou declaração dinâmica de matrizes
- Método 1: Alocação única (Linear)
- */
- #include <stdio.h>
- void leMatriz(int *mat, int m, int n);
- void imprimeMatriz(int *mat, int m, int n);
- void imprimeMatriz_v2(int *mat, int m, int n);
- int main() {
- int m, n;
- printf("Matriz com ponteiros:\n Ler e imprimir Matriz\n\nInforme a qtde de linhas e colunas da Matriz: ");
- scanf("%d %d", &m, &n);
- //Declarar matriz
- int mat[m][n];
- printf("\nPreencha os dados da matriz: \n");
- leMatriz(mat, m, n);
- printf("\n\nDados da matriz usando funcao v1: \n");
- imprimeMatriz(mat, m, n);
- printf("Dados da matriz usando funcao v2: \n");
- imprimeMatriz_v2(mat, m, n);
- return 0;
- }
- void leMatriz(int *mat, int m, int n) {
- int idx = 0;
- for(int i=0; i<m; i++) {
- for(int j=0; j<n; j++) {
- printf(" m[%d][%d]: ", i, j);
- scanf("%d", &mat[idx]);
- idx++;
- }
- }
- }
- void imprimeMatriz(int *mat, int m, int n) {
- for(int idx=0; idx<m*n; idx++) {
- printf(" %d", mat[idx]);
- //Sempre que acabar uma linha, fazemos o endl
- if((idx+1) % n == 0)
- printf("\n");
- }
- printf("\n");
- }
- void imprimeMatriz_v2(int *mat, int m, int n) {
- for(int i=0; i<m; i++) {
- for(int j=0; j<n; j++) {
- printf(" %d", mat[i*n + j]);
- //Sempre que acabar uma linha, fazemos o endl
- if((i*n + j+1) % n == 0)
- printf("\n");
- }
- }
- printf("\n");
- }
- /*
- Exemplos de entradas:
- 2 3 11 12 13 21 22 23
- 4 4 11 12 13 14 21 22 23 24 31 32 33 34 41 42 43 44
- 7 2 11 12 21 22 31 32 41 42 51 52 61 62 71 72
- 2 9 11 12 13 14 15 16 17 18 19 21 22 23 24 25 26 27 28 29
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement