Como várias pessoas já me perguntaram por e-mail, acho melhor esclarecer.
Como vocês sabem, nem todos os sistemas lineares são possíveis. Assim, nem todas as matrizes são escalonáveis. A matriz abaixo é um caso extremo disso:
1 1 1 1
1 1 1 2
1 1 1 3
A variável IFLAG deve ser usada para retornar para o programa principal uma informação muito simples: se é possível escalonar o sistema linear ou não. Imaginem que a função GaussSimple vai ser usada em um programa muito maior. O programa "acredita" que, se ele chamar a função GaussSimple com uma matriz A e um vetor x, no final da execução da função a solução do sistema vai estar em x. Mas se a matriz não é escalonável, x vai conter um monte de zeros ou um monte de lixo, o que vai causar um monte de problemas para o resto do programa. Usando a variável IFLAG, a função GaussSimple tem uma forma de avisar para o programa principal: deu pepino! Não considere que esse vetor x é a solução do sistema. O programa principal então vai ter que lidar com isso, ou construindo outra matriz, ou chamando outro método mais "robusto" para resolver o sistema, ou pedindo ajuda para o usuário.
Ainda na questão da IFLAG, outra pergunta é: "Pode fazer uma int GaussSimple que retorna 0 ou 1 dependendo se a matriz foi escalonada ou não?" A resposta é não. Vocês devem seguir o protótipo das funções exatamente como está indicado. Imaginem agora que vocês estão reescrevendo uma função que já fazia parte de um programa maior. Essa nova função é "melhor" em algum sentido, mas vai responder as mesmas questões. Você não quer, de jeito nenhum, percorrer todo o resto das 10000 linhas do programa mudando o jeito como o programa lida com essa flag. Você tem que manter o padrão que já está estabelecido.
Última nota: agora temos um fórum de discussão. Então por favor mandem as suas dúvidas para o fórum de discussão, e não para o e-mail. Assim eu preciso responder cada pergunta uma vez só - e seus colegas também podem ajudar a responder ou podem se beneficiar com as suas dúvidas também.
Bom fim de EP =)