//---------------------------------------------------------------------------
#ifndef gsolv_cH
#define gsolv_cH
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include "fruc.h"

const
 algGomoryI  = 1,
 algGomoryII = 2;

typedef TFruc* PSimplexTable;
typedef int* PIntVector;
typedef bool* PBoolVector;

class TSolveThread : public TThread
{
  private:
    PSimplexTable st;
    PBoolVector Z;
    TStrings *S;
// n - кол-во всех переменных (без целевой функции)
// nb - кол-во базисных переменный (без столбца свободных членов)
    int n,nb;
    int alg;
    
    bool EachStep;
  protected:
    void __fastcall Execute();
    void PrintTable( PIntVector basic, int n, int ncut,
                     int r, int s );
    void PrintSolve();
    void Jstep( PIntVector basic, int n, int ncut );
  public:

    bool HaveError;
    AnsiString Msg;

    TSolveThread( PSimplexTable ast, PBoolVector aZ, int an, int anb,
         		  int aalg, bool aEachStep, TStrings *aS );
    __fastcall ~TSolveThread();
    void __fastcall Picture(int color);
};

#endif
