Enviado em 23/02/2016 - 09:15h
Olá,Enviado em 23/02/2016 - 11:36h
Reescrevi o seu código. Estava com muitos erros e difícil de entender.#include <stdio.h> #define L 2 #define C 4 //Exemplo com passagem por referência void recebe_vetor(int matriz[L][C]) { int i, j; for(i=0;i<L;i++) { for(j=0;j<C;j++) { printf("entre com Vetor[%d][%d]: ",i,j); scanf("%d",&matriz[i][j]); } } } int main(void) { int matriz_A[L][C],matriz_B[L][C], soma[L][C]; int i, j; printf("Matriz A\n"); recebe_vetor(matriz_A); printf("\nMatriz B\n"); recebe_vetor(matriz_B); printf("\nSoma\n"); for(i=0;i<L;i++) { for(j=0;j<C;j++) { soma[i][j] = matriz_A[i][j] + matriz_B[i][j]; printf("soma[%d][%d] = %d\n",i,j,soma[i][j]); } } return 0; }
Enviado em 23/02/2016 - 13:09h
// f1, f2, f3 e f4 recebem argumento do tipo “ponteiro para // array com 20 elementos inteiros”. void f1(int mat[10][20]); void f2(int mat[20][20]); void f3(int mat[][20]); void f4(int (*mat)[20]); void g(void){ int m10_20[10][20]; int m20_20[20][20]; f1(m10_20); // OK, mas não pela razão aparentemente óbvia f1(m20_20); // OK, ainda que à primeira vista não pareça f2(m10_20); // OK, ainda que à primeira vista não pareça f2(m20_20); // OK, mas não pela razão aparentemente óbvia f3(m10_20); // OK, (lembrando que “[]” é sinônimo de “(*)” em declarações) f3(m20_20); // OK, (idem) f4(m10_20); // OK: referência para a primeira linha (como também acabou sendo acima) f4(m20_20); // OK: idem }
// Argumento de f é do tipo “ponteiro para [array com 10 elementos // do tipo (array com 20 elementos inteiros)]”. Além da declaração, // mostro também como usar. void f(int (*p_mat10_20)[10][20]){ for(int l=0; l<10; ++l) for(int c=0; c<20; ++c) (*p_mat10_20)[l][c]=l+c; // Note que eu tenho de derreferenciar o ponteiro para obter // a matriz sobre a qual se aplicam os índices. } void g(void){ int m10_20[10][20]; int m20_20[20][20]; int box[5][10][20]; f(&m10_20); // OK, mas note a presença do operador “&”. f(&m20_20); // ERRO: tipo de ponteiro incompatível. f(m10_20); // ERRO: ponteiro para linha de 20 ints, não ponteiro para matriz de 10×20 ints. f(box); // OK, mas acede apenas ao primeiro nível de profundidade da caixa (i.e. “&box[0]”). }
Enviado em 24/02/2016 - 10:57h
// f1, f2, f3 e f4 recebem argumento do tipo “ponteiro para // array com 20 elementos inteiros”. void f1(int mat[10][20]); void f2(int mat[20][20]); void f3(int mat[][20]); void f4(int (*mat)[20]); void g(void){ int m10_20[10][20]; int m20_20[20][20]; f1(m10_20); // OK, mas não pela razão aparentemente óbvia f1(m20_20); // OK, ainda que à primeira vista não pareça f2(m10_20); // OK, ainda que à primeira vista não pareça f2(m20_20); // OK, mas não pela razão aparentemente óbvia f3(m10_20); // OK, (lembrando que “[]” é sinônimo de “(*)” em declarações) f3(m20_20); // OK, (idem) f4(m10_20); // OK: referência para a primeira linha (como também acabou sendo acima) f4(m20_20); // OK: idem }
// Argumento de f é do tipo “ponteiro para [array com 10 elementos // do tipo (array com 20 elementos inteiros)]”. Além da declaração, // mostro também como usar. void f(int (*p_mat10_20)[10][20]){ for(int l=0; l<10; ++l) for(int c=0; c<20; ++c) (*p_mat10_20)[l][c]=l+c; // Note que eu tenho de derreferenciar o ponteiro para obter // a matriz sobre a qual se aplicam os índices. } void g(void){ int m10_20[10][20]; int m20_20[20][20]; int box[5][10][20]; f(&m10_20); // OK, mas note a presença do operador “&”. f(&m20_20); // ERRO: tipo de ponteiro incompatível. f(m10_20); // ERRO: ponteiro para linha de 20 ints, não ponteiro para matriz de 10×20 ints. f(box); // OK, mas acede apenas ao primeiro nível de profundidade da caixa (i.e. “&box[0]”). }
Enviado em 24/02/2016 - 10:59h
#include <stdio.h> #define L 2 #define C 4 //Exemplo com passagem por referência void recebe_vetor(int matriz[L][C]) { int i, j; for(i=0;i<L;i++) { for(j=0;j<C;j++) { printf("entre com Vetor[%d][%d]: ",i,j); scanf("%d",&matriz[i][j]); } } } int main(void) { int matriz_A[L][C],matriz_B[L][C], soma[L][C]; int i, j; printf("Matriz A\n"); recebe_vetor(matriz_A); printf("\nMatriz B\n"); recebe_vetor(matriz_B); printf("\nSoma\n"); for(i=0;i<L;i++) { for(j=0;j<C;j++) { soma[i][j] = matriz_A[i][j] + matriz_B[i][j]; printf("soma[%d][%d] = %d\n",i,j,soma[i][j]); } } return 0; }
Enviado em 24/02/2016 - 12:01h
Uma outra possibilidade é trabalhar com vetor unidimensional e fazer ele se comportar como bidimensional.Resolver problemas de Internet
Como compartilhar a tela do Ubuntu com uma Smart TV (LG, Samsung, etc.)
Descritores de Arquivos e Swappiness
Solução rápida para o problema do Network Manager conectar mas não navegar
Como instalar no Linux Jogos da Steam só para Windows
Instalando o Team Viewer no Debian Trixie - problema no Policykit
Ajuda Pra Melhoria do NFTABLES. (5)
Sunshine e Moonlight Linux (0)