private StatusSimplex AlgoritmoPrimeiraEtapa() { bool tlNegativoEncontrado = false; bool elemNegativoEncontrado = false; int linhaTLNegativo = 0; //zerar linha e coluna permissiveis _colunaPerm = -1; _linhaPerm = -1; //procurar por um elemento negativo na coluna dos termos livres, //escolhendo o primeiro elemento negativo encontrado for (int i = 0; i < _quadro.TotalLinhas(); i++) { if (_quadro.Matriz[i, 0].ValorSuperior < 0) { linhaTLNegativo = i; tlNegativoEncontrado = true; break; //sair do for } } //Se o elemento negativo nao existe, ir para segunda etapa do //algoritmo if (!tlNegativoEncontrado) { return(StatusSimplex.SegundaEtapa); } //procurar por elemento negativo na linha do termo livre negativo, //escolhendo o primeiro elemento negativo encontrado for (int j = 1; j < _quadro.TotalColunas(); j++) { if (_quadro.Matriz[linhaTLNegativo, j].ValorSuperior < 0) { //marcar coluna permissivel _colunaPerm = j; elemNegativoEncontrado = true; break; //sair do for } } //se nao existir elemento negativo na mesma linha do termo livre //negativo, entao nao existe solucao permissivel if (!elemNegativoEncontrado) { return(StatusSimplex.SolucaoImpossivel); } //calcular linha permissivel this.CalcularLinhaPermissivel(); return(StatusSimplex.AlgoritmoTroca); }