outro erro besta!

outro erro besta!

por Gilberto Guerra -
Número de respostas: 2
Não to conseguindo atribuir valores a matriz
tenho uma função Ler Matriz - para q eu efetue os testes,
mas ela não está atribuindo valor algum!

prototipo
void LerMatriz(int n, double M[MAX][MAX + 1]

linha para atribuição
scanf("%f", &M[i][j]);

chamando a função no Main
LerMatriz(n, M);
Em resposta à Gilberto Guerra

Re: outro erro besta!

por Andre Chalom -

Além do que o Marcos falou, tome cuidado com o escopo das variáveis. Ou seja, veja isso:

int main () {

int n = 0;

LeMatriz (n, M);

printf("n agora vale %d\n", n);

return 0;

}

Esse programa SEMPRE vai dizer que "n agora vale 0", não importa o que a função LeMatriz faça. Isso acontece porque o main, ao passar o argumento n, vai na verdade fazer uma cópia do n e passar para a LeMatriz. Quando a LeMatriz terminar de executar, ela simplesmente destrói essa cópia.

Existem dois jeitos de contornar esse problema. Um é declarar a variável n como uma variável global - mas isso não é recomendado, porque variáveis globais são do mal e comem criancinhas.

O outro jeito, que é o jeito "certo", é passar o n como ponteiro:

int main () {

int n;

LeMatriz (&, M);

...

}

E declarar a funcao LeMatriz como:

void LeMatriz (int * n, double M[MAX][MAX+1]) { ...}

Note que você não precisa fazer a mesma coisa para M porque  uma matriz é SEMPRE passada como se fosse um ponteiro.