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);
abraços.
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.