Simplex
#include
#include
#include
#define MAX 30
#define RESTRICAO 10
/*programa que calcula a solução otima para uma funcao, baseada no tableau de simplex usando algoritmo de maximizacao*/
double C[MAX], tableau[MAX + 1][MAX + RESTRICAO]; double B[RESTRICAO];
int LeituraDosDados(int *var, int op)
{
int rest, c, i; printf("\n Formato: [ c1.X1+c2.X2+...cn.Xn = b ] \n\n"); printf("Digite o valor dos coeficientes : \n (Ao digitar '0' o programa deixara de receber novos coeficientes!)\n"); c = 0; do{ printf(" c%d: ", c + 1); scanf("%lf", &C[c]); if(op == 2) C[c] = C[c] * -1; fflush(stdin); c++; } while(C[c-1]!=0); *var = c-1;
printf("\nNumero de restricoes: "); scanf("%d", &rest);
fflush(stdin);
for(i = 0; i < rest; i++) { printf(" %da Restricao \n", i + 1); for(c = 0; c < *var; c++) { printf(" c%d: ", c + 1); scanf("%lf", &tableau[i][c]); fflush(stdin); } printf(" B = "); scanf("%lf", &B[i]); fflush(stdin); }
return rest;
}
int main(void)
{
int rest, var, ni ; int op; int i, j, k, coluna, linha, cont1, cont2; double maximo = 0, menor, aux, mult, temp; system("color 5"); printf("\t\t\t\tIsadora e Ronie\n\n"); printf("\t\t\t\tSIMPLEX\n\n"); printf("Maximizacao = '1'\nMinimizacao = '2' \n"); do{ scanf("%d", &op); fflush(stdin); } while(op != 1 && op != 2); rest = LeituraDosDados(&var, op);
//Criar tableau inicial do simplex for(i = 0; i < rest; i++) for(j = 0; j < rest; j++) if (i == j) tableau[i][var + j] = 1; else tableau[i][var + j] = 0; for(i = 0; i < rest; i++) tableau[i][var + rest] = B[i];
for(j =