Algo simplexe

hustla2009 Messages postés 1 Date d'inscription mardi 14 avril 2009 Statut Membre Dernière intervention 14 avril 2009 - 14 avril 2009 à 21:54
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 - 15 avril 2009 à 11:00
bonjour tout le monde quelqu'un pourra m'aider a trouver les erreus de ce code source
il ressous par la methode du simplexe  les probleme recherche operationnelle.


#include
#include <stdlib.h>
       class tab
{ float simp[4][7];
public:
tab();
  void rempmax();
float cpivot();
void rapport();
float lpivot();
void remp();
void affiche();
};
  tab::tab() {
 for( int i=1;i<=3;i++)
{
for (int a=1; a<=5;a++){
cout<<"donner le coef \t "<> simp[i][a];}


cout <<"donner le second membre de l'equation";
cin>> simp[i][6];}


}


 void tab::rempmax()
 {


cout<<"donner le coef 1 de la fontion de maximisation\n";
cin>> simp[4][1];
cout<<"donner le coef 2 de la fonction de maximisation\n";
cin>> simp[4][2];


simp[4][3]=0;
simp[4][4]=0;
simp[4][5]=0;
 simp[4][6]=0;
 simp[4][7]=0;
}


int c=0;
float tab::cpivot()
{
float max=simp[4][1];


for (int k=1; k<=2;k++)
{    float comp  = simp[4][k] ;
if (max<= comp) {c=k; }
}
return (c) ;}
void tab::rapport()
{
for (int i=1; i<=3;i++)
{
simp [i][7]=simp[i][6]/simp[i][c];
}
}
int l=0;
float tab::lpivot(){
float min= simp[1][7];


for (int s=1; s<=3; s++)
 { if (min >= simp[s][7]){l=s; min=simp[s][7];}
}return (l);
}
void tab::remp()
{  float pivot=simp[l][c];
for (int k=1; k<=6; k++)
{
simp[l][k]=simp[l][k]/pivot;
 }


for (int i=1;i<l;i++)
{
 for (int j=1;j<=6;j++)
{
simp[i][j]=simp[i][j]- simp[i][c]*simp[l][j]/pivot;


}
   }
 int f=l+1;
for (int z=f; z<=4;z++)
{
 for (int t=1;t<=6;t++)
{ float res= simp[z][t] ;
 float res2=  simp[z][c]*simp[l][t]/pivot ;
simp[z][t]=res-res2;
}
}
cout<<"\n variable de bases"<< l<<"change contre variable de decision"<<c;}
void tab::affiche(){
for (int i=1;i<=4;i++)
{
 for (int j=1; j<=7;j++)
{  float a=simp[i][j];
cout << a<<"\t" ;}cout<<"\n";
}}


 


int main()
{


float clp, lp;
   tab a;
a.rempmax();
 a.affiche();
clp=a.cpivot();


a.rapport();
lp=a.lpivot();a.affiche();


cout<<"\n ligne pivot\t"<<l<<"\n" ;
cout<<"colonne pivot "<<clp<<"\n";


cout<<"\n construction du tableau 2";
  a.remp();
   clp=a.cpivot();
a.rapport();
lp=a.lpivot();
 cout<<"\n ligne pivot\t"<<l<<"\n" ;
cout<<"colonne pivot "<<clp<<"\n";
a.affiche();
 system("PAUSE");
cout<<" construction du tableau 3";
a.remp();
a.affiche(); 


      system("PAUSE");
      return 0;
}

1 réponse

krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 49
15 avril 2009 à 11:00
Salut.

Si ton problème est au niveau de l'algorithme lui-même, il vaut mieux utiliser du pseudo code, tous les développeurs pourront ainsi t'aider.
Si ton problème est au niveau du code, il vaut mieux poster dans la bonne section, car il me semble qu'il s'agit de C++, or une section est consacrée à ce langage : www.cppfrance.com. (enfin, pas la peine de faire un double post, mais fait attention la prochaine fois...)

Cependant, soit plus précis en ce qui concerne ton problème. Parce que "Il y a des erreurs dans le code", ça n'aide pas beaucoup pour les trouver...

PS : depuis quand on marque le .h dans #include ? J'étais persuadé qu'on ne le mettait pas avec le bib C++

Krimog :
while (!(succeed = try())) ;
0
Rejoignez-nous