Pulse 0 Denunciar post Postado Junho 1, 2015 #include <stdio.h> void multiplica(int, int *); int main () { int m[3][3], y, l, c; puts("Digite um numero"); scanf("%d", &y); for(l=0; l<3; l++) { for(c=0; c<3; c++) { scanf("%d", &m[l][c]); } } multiplica(y, m); } void multiplica(int y, int *m1) { int l, c; for(l=0; l<3; l++) { for(c=0; c<3; c++) { m1[l][c] *= y; } } for(l=0; l<3; l++) { for(c=0; c<3; c++) { printf("%d ", m1[l][c]); } printf("\n"); } } Preciso passar um valor e uma matriz como parâmetro para uma função e depois multiplicar todos os termos da matriz pelo valor. O que tem de errado no código? Ele funciona quando uso um vetor. Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Junho 1, 2015 multiplica.c: In function ‘main’: multiplica.c:20:5: warning: passing argument 2 of ‘multiplica’ from incompatible pointer type [enabled by default] multiplica(y, m); ^ multiplica.c:3:6: note: expected ‘int *’ but argument is of type ‘int (*)[3]’ void multiplica(int, int *); ^ multiplica.c: In function ‘multiplica’: multiplica.c:31:18: error: subscripted value is neither array nor pointer nor vector m1[l][c] *= y; ^ multiplica.c:39:32: error: subscripted value is neither array nor pointer nor vector printf("%d ", m1[l][c]); Use nomes que signifiquem alguma coisa. #include <stdio.h> #define MAX 3 void multiplica(int n, int matriz[][MAX]); void imprime(int matriz[][MAX]); int main (void) { int matriz[MAX][MAX]; int multiplicador; puts("Digite um numero"); scanf("%d", &multiplicador); puts("Informe a matriz:"); int linha, coluna; for(linha=0; linha<MAX; linha++) { for(coluna=0; coluna<MAX; coluna++) { scanf("%d", &matriz[linha][coluna]); } } multiplica(multiplicador, matriz); imprime(matriz); return 0; } void multiplica(int n, int matriz[][MAX]) { for(int linha=0; linha<MAX; linha++) { for(int coluna=0; coluna<MAX; coluna++) { matriz[linha][coluna] = n * matriz[linha][coluna]; } } } void imprime(int matriz[][MAX]) { for(int linha=0; linha<MAX; linha++) { for(int coluna=0; coluna<MAX; coluna++) { printf("%d%c", matriz[linha][coluna], (coluna==MAX-1)?'\n':' '); } } } Compartilhar este post Link para o post Compartilhar em outros sites