Problème classe polynome

cricri nature Messages postés 47 Date d'inscription vendredi 17 décembre 2004 Statut Membre Dernière intervention 7 janvier 2005 - 24 déc. 2004 à 15:14
cricri nature Messages postés 47 Date d'inscription vendredi 17 décembre 2004 Statut Membre Dernière intervention 7 janvier 2005 - 2 janv. 2005 à 18:55
Bonjour, j'ai réussi à finir ma classe monome et doit maintenant créer une classe polynome. Seulement il y a 2 erreurs que je ne comprend pas. Pouvez-vous m'aider?

//poly(cricri.h)

# include 
# include <cmath>
using namespace std;

class monome{
float c;
int n;//nombre d'indeterminee
int* tab;

public:

monome();	//constructeur du monome nul
monome(float coefficient,int MAX_IND);	//constructeur
float coeff();	//coefficient du monome
int nb_ind(); //nombre d'indeterminees
int deg_max();	//degre maximum parmi les indeterminees du monome 
int deg_hom();	//degre homogene (present dans le tableau tab)
int deg_ind();	//degre de la ieme indeterminee
void ind_pres();	//indeterminees effectivement presentes
float evalm();	//evalue un monome a partir des valeurs 
//attribuees aux indeterminees
void affichage(); //affichage du monome

};

class polynome{
int nbm; //nombre de monomes
int nbi; //nombre d'indeterminees
monome* poly;

public :
polynome(); //constructeur du monome nul
polynome(int i, int n); //constructeur
polynome operator+(polynome p);
}



//poly(cricri.cpp)

#include "cricri.h"
# include 
# include <cmath>
using namespace std;

monome::monome()
{c=0; n=0;}

monome::monome(float coefficient,int MAX_IND)
{c=coefficient; n=MAX_IND;
tab=new int[MAX_IND];
}

float monome::coeff()
{return c;}

int monome::nb_ind()
{return n;}

int monome::deg_max()
{monome m;
cout<<"Le nombre d'indeterminees est : "<<n<<endl;
for(int j=0;j<n;j++)
{cout<<"Le "<<j+1<<"ieme degre est :"<<endl;
cin>>tab[j];}
int max=tab[0];
for(int i=1;i<n;i++)
{if(tab[i]>max) 
 	 max=tab[i];}
 return max;
}

int monome::deg_hom()
{int somme=0;
 for(int i=0;i<n;i++)
 {cout<<"Le "<>tab[i];
 somme=somme+tab[i];}
 return somme;
}

int monome::deg_ind()
{int i; 
cout<<"Indeterminee numero :"<<endl;
cin>>i;
for(int j=0;j<n;j++)
{cout<<"Le "<<j+1<<"ieme degre est :"<<endl;
 cin>>tab[j];}
if(i>0 && i<=n)
{cout<<"Le degre de l'indeterminee "<>tab[j];}
for(int i=0;i<n;i++)
{if(tab[i]!=0) 
cout<<"L'indeterminee "<>val[j];}
 for(int i=0;i<n;i++)
 {cout<<"Le "<>tab[i];}
 cout<<"Le coefficient est : "<<c<<endl;
 float f=1;
 for(int h=0;h<n;h++)
 {f=f*pow(val[h],tab[h]);}
 f=f*c;
 return f;
 cout<<"La valeur du monome est : "<<f<<endl;
}

void monome::affichage()
{monome m;
 cout<<"Le nombre d'indeterminees est : "<<n<<endl;
 char* ind=new char[n];
 for(int j=0;j<n;j++)
 {cout<<j+1<<"eme indeterminee ? \n";
 cin>>ind[j];}
 for(int i=0;i<n;i++)
 {cout<<"Le "<>tab[i];}
 cout<<"Le coefficient est : "<<c<<endl;
 for (int k=0;k<n;k++)
 {cout<<"Le monome est : "<
using namespace std;

void main()
{
 monome m;
 m=monome(6,3);
 int choix=-1;
 
 while (choix!=0)
 	{cout<<"Faites un choix:\n";
 	 cout<<"1. Le coefficient\n";
 cout<<"2. Nombre d'indeterminees \n";
 cout<<"3. Afficher le degre maximum \n";
 cout<<"4. Afficher le degre homogene \n";
 cout<<"5. Afficher le degre d'une indeterminee \n";
 cout<<"6. Indique les indeterminees presentes \n";
 cout<<"7. Evaluer m a partir de valeurs attribuees aux indeterminees\n";
 cout<<"8. Afficher le monome\n";
 cout<<"0. Quitter \n";
 	 
 	 cin>>choix;
 	 
 	 switch(choix)
 	 	{case 1 : cout<<"Le coefficient est : "<<m.coeff()<<endl; break;
 case 2 : cout<<"Le nombre d'indeterminees est : "<<m.nb_ind()<<endl; break;
 case 3 : cout<<"Le degre max est : "<<m.deg_max()<<endl; break;
 case 4 : cout<<"Le degre homogene est : "<<m.deg_hom()<<endl; break;
 case 5 : cout<<m.deg_ind()<<endl; break;
 case 6 : m.ind_pres();cout<<endl; break;
 case 7 : cout<<"La valeur de l'indeterminee est : "<<m.evalm()<<endl; break;
 case 8 : m.affichage();cout<<endl; break;
 default : cout<<"Pas le bon cas."<<endl; break;
 	 	}
 
 	 }

 }
 



Mes erreurs :

--------------------Configuration: poly - Win32 Debug--------------------
Compiling...
cricri.cpp
c:\mes documents\école\math\dauphin2poly\poly\cricri.cpp(6) : error C2143: syntax error : missing ';' before 'PCH creation point'
test.cpp
c:\mes documents\école\math\dauphin2poly\poly\test.cpp(5) : error C2143: syntax error : missing ';' before 'PCH creation point'
Error executing cl.exe.

poly.exe - 2 error(s), 0 warning(s)

Pouvez-vous aussi me dire comment je peux utiliser la classe monome pour la classe polynome.

68 réponses

luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
27 déc. 2004 à 13:15
FICHIER MAIN.CPP :

# include "cricri.h"
# include
using namespace std;

int main(int argc, char* argv[])
{
monome m1(6,3);
monome m2(2,4);
polynome p(2);

m1.tab[0] = 1;
m1.tab[1] = 5;
m1.tab[2] = 2;

m2.tab[0] = 4;
m2.tab[1] = 0;
m2.tab[2] = 2;
m2.tab[3] = 1;

p.liste_monome[0] = m1;
p.liste_monome[1] = m2;

int choix=-1;

while (choix!=0)
{cout<<"Faites un choix:\n";
cout<<"1. Le coefficient SI YA PLUSIEURS MONOME ON PREND LEKEL ???\n";
cout<<" en l'occurence, il y en a deux.\n";
cout<<"2. Nombre d'indeterminees du monome \n";
cout<<"3. Afficher le degre maximum \n";
cout<<"4. Afficher le degre homogene \n";
cout<<"5. Afficher le degre d'une indeterminee \n";
cout<<"6. Definir le monome\n";
cout<<"7. Indique les indeterminees presentes \n";
cout<<"8. Evaluer m a partir de valeurs attribuees aux indeterminees\n";
cout<<"9. Afficher le monome\n";
cout<<"10. Nombre d'indeterminees du polynome \n";
cout<<"11. Nombre de monomes du polynome \n";
cout<<"12. affichage \n";

cout<<"0. Quitter \n";

cin>>choix;

switch(choix)
{case 1 : cout<<"Le coefficient est : "<<m1.coeff()<<endl; break;
case 2 : cout<<"Le nombre d'indeterminees du monome est : "<<m1.nb_ind()<<endl; break;
case 3 : cout<<"Le degre max est : "<<m1.deg_max()<<endl; break;
case 4 : cout<<"Le degre homogene est : "<<m1.deg_hom()<<endl; break;
case 5 : cout<<m1.deg_ind()<<endl; break;
case 6 :
cout << endl;
cout << "Premier monome : " << endl;
cout << "Ecrire les degres des " << m1.n << " indeterminees dans l'ordre: " << endl;
cin >> m1;
cout << endl;
cout << "Deuxième monome : " << endl;
cout << "Ecrire les degres des " << m2.n << " indeterminees dans l'ordre: " << endl;
cin >> m2;
break;
case 7 : m1.ind_pres();cout<<endl; break;
case 8 : cout<<"La valeur de l'indeterminee est : "<<m1.evalm()<<endl; break;
case 9 : cout << endl; m1.affichage(); cout << endl; system("PAUSE"); break;
case 10 : cout<<"Le nombre d'indeterminees du polynome est : "<
# include <cmath>
using namespace std;

monome::monome()
{c=0; n=0;}

monome::monome(float coefficient,int MAX_IND)
{
c=coefficient;
n=MAX_IND;
tab=new int[MAX_IND];
}

float monome::coeff()
{
return c;
}

int monome::nb_ind()
{
return n;
}

int monome::deg_max()
{
monome m;
cout<<"Le nombre d'indeterminees est : "<<n<<endl;
for(int j=0;j<n;j++)
{
cout<<"Le "<<j+1<<"ieme degre est :"<<endl;
cin>>tab[j];}
int max=tab[0];
for(int i=1;i<n;i++)
{
if(tab[i]>max)
max=tab[i];}
return max;
}

int monome::deg_hom()
{
int somme=0;
for(int i=0;i<n;i++)
{
cout<<"Le "<>tab[i];
somme=somme+tab[i];
}
return somme;
}

int monome::deg_ind()
{
int i;
cout<<"Indeterminee numero :"<<endl;
cin>>i;
for(int j=0;j<n;j++)
{
cout<<"Le "<<j+1<<"ieme degre est :"<<endl;
cin>>tab[j];}
if(i>0 && i<=n)
{
cout<<"Le degre de l'indeterminee "<>tab[j];}
int i=0;
for(;i<n;i++)
{
if(tab[i]!=0)
cout<<"L'indeterminee "<>val[j];}
for(int i=0;i<n;i++)
{cout<<"Le "<>tab[i];}
cout<<"Le coefficient est : "<<c<<endl;
float f=1;
for(int h=0;h<n;h++)
{f=f*pow(val[h],tab[h]);}
f=f*c;
return f;
cout<<"La valeur du monome est : "<<f<<endl;
}

void monome::affichage()
{
char lettre = 97;
if (this->c != 0.0f)
{
cout << this->c;
for(int i=0; i<this->n ; i++)
{
if (this->tab[i] != 0)
{
cout << "." << lettre;
if (this->tab[i] != 1) cout << "^" << this->tab[i];
}
lettre++;
}
}
}

polynome::polynome()
{
nbm = 0;
nbi = 0;
}

polynome::polynome(int nb_monome)
{
this->nbm = nb_monome;
this->liste_monome = new monome[nb_monome];
this->nbi = this->nb_i();
}

int polynome::nb_m()
{return nbm;}

int polynome::nb_i()
{
int max = 0;
for( int i=0; i<this->nbm; i++)
{
if (this->liste_monome[i].n>max) max = this->liste_monome[i].n;
}
return max;
}

void polynome::affichage()
{
cout << "P = ";
for (int i=0; i<this->nbm; i++)
{
this->liste_monome[i].affichage();
cout << ((i+1<this->nbm) && (this->liste_monome[i+1].c!=0.0f)?" + ":"");
}
}

CRICRI.H:

# include
# include <cmath>
using namespace std;

class monome{

public:
float c;
int n;//nombre d'indeterminee

monome* poly;
int* tab; //tableau contenant les degres du monome

monome(); //constructeur du monome nul
monome(float coefficient,int MAX_IND); //constructeur
float coeff(); //coefficient du monome
int nb_ind(); //nombre d'indeterminees
int deg_max(); //degre maximum parmi les indeterminees du monome
int deg_hom(); //degre homogene (present dans le tableau tab)
int deg_ind(); //degre de la ieme indeterminee
void ind_pres(); //indeterminees effectivement presentes
float evalm(); //evalue un monome a partir des valeurs
//attribuees aux indeterminees
void affichage(); //affichage du monome

friend inline std::istream& operator >> (std::istream& chaine, monome& which)
{
for (int i = 0; i < which.n ; i++)
{
chaine >> which.tab[i];
}
}
};

class polynome{
int nbm; //nombre de monomes
int nbi;

public :
monome* liste_monome; //tableau ou je stocke des monomes

polynome(); //constructeur du monome nul
polynome(int nb_monome); //constructeur
int nb_m(); //nombre de monomes
int nb_i(); //nombre d'indeterminees
void affichage();

};

BOn voila, sans l'utilisation des ostreams. Sauf pour définir un monome, j'ai fais avec la surcharge de >>.
Les fonctions d'affichage marchent bien.

Enfin je te laisse regardé, et rajouter ce qui ne va pas. Regarde le début de main.cpp, il faut que tu fasses des fonctions qui te conviennent pour définir les degrés des différentes indéterminées d'un monome. Je l'ai fais, mais je sais pas si ca va te convenir.

De plus, ce n'est pas dynamique pour le moment, dans le sens, ou seulement deux monomes sont définis au début du prgm, enfin tu te débrouilles.

De plus, c'est catastrophique point de vue gestion de la mémoire. Mais je te laisse corriger tout ca.

Aller dit moi si ca te convient ++
0
cricri nature Messages postés 47 Date d'inscription vendredi 17 décembre 2004 Statut Membre Dernière intervention 7 janvier 2005
27 déc. 2004 à 13:51
Que représente exactement this --> ...
Peux-tu aussi me proposer une fonction de saisie? svp.
Merci d'avance.

Je vais essayer de regarder ton programme ce soir et modifier quelques petits trucs.
Merci déjà pour le programme.
0
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
27 déc. 2004 à 14:12
Excuse moi, mais tu fais de l'objet sans connaitre "this". Il faut que tu revois les bases. C'est juste un pointeur sur l'objet courant.
Quand je fais m.affichage();

dans la fonction affichage, this c'est un pointeur sur m.
this est facultatif mais je te conseille de le mettre partout, ca éclaircit le code.
A oui pendant que j'y pense. IL FAUT ABSOLUMENT QUE TU FASSES UN EFFORT POUR ECRIRE TES PRGMS.
C'est illisible ^^

Pour ce qui est de la fonction de saisie, je l'ai faite avec >>. Donc si tu veux pas utiliser ca, tu la modifies comme tu veux.
0
cricri nature Messages postés 47 Date d'inscription vendredi 17 décembre 2004 Statut Membre Dernière intervention 7 janvier 2005
27 déc. 2004 à 16:36
ok pour this mais sérieusement notre prof nous en a parler une fois très très rapidement sans trop insister. (De toute façon, pour lui si on a pas bien compris queque chose, c'est pas très grave!!!! ) Il ne l'utilise jamais dans ses programmes.

Je veux créer maintenant ma fonction : int deg_glob();

Son rôle est : elle fait une boucle de 0 à nbm et regarde le degré homogène de chaque monome pour en retourner le plus élevé.

J'ai écrit :
//(math)cricri.h

# include 
# include <cmath>
using namespace std;

class monome{

public:

float c;//coefficient
int n;//nombre d'indeterminee
int* tab;
char* ind;

monome();	//constructeur du monome nul
monome(float coefficient,int MAX_IND);	//constructeur
float coeff();	//coefficient du monome
int nb_ind(); //nombre d'indeterminees
int deg_max();	//degre maximum parmi les indeterminees du monome 
int deg_hom();	//degre homogene (present dans le tableau tab)
int deg_ind();	//degre de la ieme indeterminee
void ind_pres();	//indeterminees effectivement presentes
float evalm();	//evalue un monome a partir des valeurs 
//attribuees aux indeterminees
void affichage(); //affichage du monome

};

class polynome{
int nbm; //nombre de monomes
int nbi; //nombre d'indeterminees

public :

monome* liste_monome; //tableau contenant des monomes
polynome(); //constructeur du monome nul
polynome(int i, int n); //constructeur
int nb_m(); //nombre de monomes
int nb_i(); //nombre d'indeterminees
void affichage(); //affichage du polynome
int deg_glob();

};




//(math)cricri.cpp

#include "cricri.h"
# include 
# include <cmath>
using namespace std;

monome::monome()
{c=0; n=0;}

monome::monome(float coefficient,int MAX_IND)
{c=coefficient; 
n=MAX_IND;
tab=new int[MAX_IND];
}

float monome::coeff()
{return c;}

int monome::nb_ind()
{return n;}

int monome::deg_max()
{monome m;
cout<<"Le nombre d'indeterminees est : "<<n<<endl;
for(int j=0;j<n;j++)
{cout<<"Le "<<j+1<<"ieme degre est :"<<tab[j]<<endl;}
int max=tab[0];
for(int i=1;i<n;i++)
{if(tab[i]>max) 
 	 max=tab[i];}
 return max;
}

int monome::deg_hom()
{int somme=0;
 for(int i=0;i<n;i++)
 {cout<<"Le "<>i;
for(int j=0;j<n;j++)
{cout<<"Le "<<j+1<<"ieme degre est : "<<tab[j]<<endl;}
if(i>0 && i<=n)
{cout<<"Le degre de l'indeterminee "<>val[j];}
 for(int i=0;i<n;i++)
 {cout<<"Le "<max)
max=liste_monome[i].n;}
return max;}

void polynome::affichage()
{cout<<"p = ";
for (int i=0; i<nbm; i++)
{liste_monome[i].affichage();
cout<<((i+1<nbm) && (liste_monome[i+1].c!=0)?" + ":" ");}
}

int polynome::deg_glob()
{int max=mi.deg_hom();
for (int i=1; i<nbm;i++)
{if (mi.deg_hom()>max) 
return mi.deg_hom();
else return max;}}



<td class=code>

//(math)test.cpp

# include \"cricri.h\"
# include
using namespace std;

void main()
{
monome m1(6,3);
monome m2(2,4);
polynome p(5,2);

m1.tab[0] = 1;
m1.tab[1] = 5;
m1.tab[2] = 2;

m2.tab[0] = 4;
m2.tab[1] = 0;
m2.tab[2] = 2;
m2.tab[3] = 1;

p.liste_monome[0] = m1;
p.liste_monome[1] = m2;

int choix=-1;

while (choix!=0)
{cout<<\"Faites un choix:\n\";
cout<<\"1. Le coefficient du monome i (choisir i)\n\";
cout<<\"2. Nombre d'indeterminees du monome i(choisir i)\n\";
cout<<\"3. Afficher le degre maximum du monome i(choisir i)\n\";
cout<<\"4. Afficher le degre homogene du monome i (choisir i)\n\";
cout<<\"5. Afficher le degre d'une indeterminee du monome i (choisir i)\n\";
cout<<\"6. Indique les indeterminees presentes du monome i (choisir i)\n\";
cout<<\"7. Evaluer m a partir de valeurs attribuees aux indeterminees du monome i (choisir i)\n\";
cout<<\"8. Afficher le monome i (choisir i)\n\";
cout<<\"10. Nombre d'indeterminees du polynome \n\";
cout<<\"11. Nombre de monomes du polynome \n\";
cout<<\"12. Afficher le polynome\n\";
cout<<\"13. Afficher le degré global du polynome\n\";
cout<<\"0. Quitter \n\";

cin>>choix;

switch(choix)
{case 1 : cout<<\"Le coefficient est : \"<<m1.coeff()<<endl; break;
case 2 : cout<<\"Le nombre d'indeterminees du monome est : \"<<m1.nb_ind()<<endl; break;
case 3 : cout<<\"Le degre max est : \"<<m1.deg_max()<<endl; break;
case 4 : cout<<\"Le degre homogene est : \"<<m1.deg_hom()<<endl; break;
case 5 : cout<<m1.deg_ind()<<endl; break;
case 6 : m1.ind_pres();cout<<endl; break;
case 7 : cout<<\"La valeur de l'indeterminee est : \"<<m1.evalm()<<endl; break;
case 8 : m1.affichage();cout<<endl; break;
case 10 : cout<<"Le nombre d'indeterminees du polynome est : "<

Mes erreurs :

--------------------Configuration: dauphin2 - Win32 Debug--------------------
Compiling...
cricri.cpp
c:\mes documents\école\math\cricri.cpp(119) : error C2065: 'm1' : undeclared identifier
c:\mes documents\école\math\cricri.cpp(119) : error C2228: left of '.deg_hom' must have class/struct/union type
c:\mes documents\école\math\cricri.cpp(121) : error C2065: 'mi' : undeclared identifier
c:\mes documents\école\math\cricri.cpp(121) : error C2228: left of '.deg_hom' must have class/struct/union type
c:\mes documents\école\math\cricri.cpp(122) : error C2228: left of '.deg_hom' must have class/struct/union type
test.cpp
Error executing cl.exe.

dauphin2.exe - 5 error(s), 0 warning(s)

Je sais que m1, mi font partis de la classe monome et qu'on est dans la classe polynome mais comment faire alors?

Et pour la fonction : int deg_ind()

Son rôle est : de retourner le degré d'une indéterminée donnée du monome.

Seulement j'ai le même problème : comment regarder chaque monome?

En fait, il faut par exemple s'intéresser à l'indéterminée a et regarder quel est son degré max dans le polynome en parcourant chaque monome.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
27 déc. 2004 à 17:15
Tu vas voir, c'est pas dur car tu as deja fait toutes les fonctions nécessaires.

Alors, ta fonction:

int deg_glob(void)
{

// il faut parcourir tous les monomes du polynomes donc:

int max = 0; // on initialise le max a 0
for (int i=0; i < this->nbm ; i++)

// cherche rien de compliquer dans "this", c'est facultatif, mais au moins, on sait que nbm, ca appartient au polynome d'où on appelle la fonction. Donc on fait défiler "i" comme tu le disais sur tous les monomes. DOnc la suite est logique :

{
if (this->liste_monome[i].deg_hom() > max)
{ max = this->liste_monome[i].deg_hom(); }
}

// on fait défiler tous les monomes et on regarde celui dont le degré homogène est le plus élevé.
//Faut pas perdre de vu que liste_monome[i] EST UN MONOME. Donc toutes les fonctions défiinis peuvent etre utilisée.

return max;
}

Voila, j'ai pas testé, mais il ya pas de raison que ca ne marche pas.
0
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
27 déc. 2004 à 17:19
A propos de ta fonction:
int polynome::deg_glob()
{
int max=mi.deg_hom();

for (int i=1; i<nbm;i++)
{

if (mi.deg_hom()>max)

return mi.deg_hom();

else return max;

}
}

ATTENTION: lorsque tu écris return, ca quitte la fonction. Or c'est pas du tout ce que l'on veut. Le return retourne le résultat final.
De plus je ne comprend pas "mi", c'est quoi.
Je pense que c'est justement ce "this->liste_monome[i]", c'est à dire le ième monome du polynome en question.

Demande si ta des question la dessus. Mais revoi la fonction return, ca ne peut pas marcher ici. Corriger ta fonction, on va revenir sur la fonction que je t'ai proposé juste au dessus.

Aller ++
0
cricri nature Messages postés 47 Date d'inscription vendredi 17 décembre 2004 Statut Membre Dernière intervention 7 janvier 2005
27 déc. 2004 à 17:20
Je veux aussi faire la somme de deux polynomes :


//(math)cricri.h

# include 
# include <cmath>
using namespace std;

class monome{

public:

float c;//coefficient
int n;//nombre d'indeterminee
int* tab;
char* ind;

monome();	//constructeur du monome nul
monome(float coefficient,int MAX_IND);	//constructeur
float coeff();	//coefficient du monome
int nb_ind(); //nombre d'indeterminees
int deg_max();	//degre maximum parmi les indeterminees du monome 
int deg_hom();	//degre homogene (present dans le tableau tab)
int deg_ind();	//degre de la ieme indeterminee
void ind_pres();	//indeterminees effectivement presentes
float evalm();	//evalue un monome a partir des valeurs 
//attribuees aux indeterminees
void affichage(); //affichage du monome

};

class polynome{
int nbm; //nombre de monomes
int nbi; //nombre d'indeterminees

public :

monome* liste_monome; //tableau contenant des monomes
polynome(); //constructeur du monome nul
polynome(int i, int n); //constructeur
int nb_m(); //nombre de monomes
int nb_i(); //nombre d'indeterminees
void affichage(); //affichage du polynome
polynome somme();

};




//(math)cricri.cpp

#include "cricri.h"
# include 
# include <cmath>
using namespace std;

monome::monome()
{c=0; n=0;}

monome::monome(float coefficient,int MAX_IND)
{c=coefficient; 
n=MAX_IND;
tab=new int[MAX_IND];
}

float monome::coeff()
{return c;}

int monome::nb_ind()
{return n;}

int monome::deg_max()
{monome m;
cout<<"Le nombre d'indeterminees est : "<<n<<endl;
for(int j=0;j<n;j++)
{cout<<"Le "<<j+1<<"ieme degre est :"<<tab[j]<<endl;}
int max=tab[0];
for(int i=1;i<n;i++)
{if(tab[i]>max) 
 	 max=tab[i];}
 return max;
}

int monome::deg_hom()
{int somme=0;
 for(int i=0;i<n;i++)
 {cout<<"Le "<>i;
for(int j=0;j<n;j++)
{cout<<"Le "<<j+1<<"ieme degre est : "<<tab[j]<<endl;}
if(i>0 && i<=n)
{cout<<"Le degre de l'indeterminee "<>val[j];}
 for(int i=0;i<n;i++)
 {cout<<"Le "<max)
max=liste_monome[i].n;}
return max;}

void polynome::affichage()
{cout<<"p = ";
for (int i=0; i<nbm; i++)
{liste_monome[i].affichage();
cout<<((i+1<nbm) && (liste_monome[i+1].c!=0)?" + ":" ");}
}

polynome polynome::somme()
{polynome s; polynome p; polynome q;
s=polynome (p.nbm+q.nbm, p.nbi+q.nbi);
cout<<"s = ";
for(int i=0; i=p.nbm; j<q.nbm;j++)
{s.liste_monome [j] = q.liste_monome[j-p.nbm];}
return s;}



<td class=code>

//(math)test.cpp

# include \"cricri.h\"
# include
using namespace std;

void main()
{
monome m1(6,3);
monome m2(2,4);
monome m3(5,4);

polynome p(5,2);
polynome q(3,1);

m1.tab[0] = 1;
m1.tab[1] = 5;
m1.tab[2] = 2;

m2.tab[0] = 4;
m2.tab[1] = 0;
m2.tab[2] = 2;
m2.tab[3] = 1;

m3.tab[0] = 5;
m3.tab[1] = 2;
m3.tab[2] = 8;
m3.tab[3] = 7;

p.liste_monome[0] = m1;
p.liste_monome[1] = m2;

q.liste_monome[0] = m3;

int choix=-1;

while (choix!=0)
{cout<<\"Faites un choix:\n\";
cout<<\"1. Le coefficient du monome i (choisir i)\n\";
cout<<\"2. Nombre d'indeterminees du monome i(choisir i)\n\";
cout<<\"3. Afficher le degre maximum du monome i(choisir i)\n\";
cout<<\"4. Afficher le degre homogene du monome i (choisir i)\n\";
cout<<\"5. Afficher le degre d'une indeterminee du monome i (choisir i)\n\";
cout<<\"6. Indique les indeterminees presentes du monome i (choisir i)\n\";
cout<<\"7. Evaluer m a partir de valeurs attribuees aux indeterminees du monome i (choisir i)\n\";
cout<<\"8. Afficher le monome i (choisir i)\n\";
cout<<\"10. Nombre d'indeterminees du polynome p\n\";
cout<<\"11. Nombre de monomes du polynome p\n\";
cout<<\"12. Afficher le polynome p\n\";
cout<<\"13. Afficher le degre global du polynome p\n\";
cout<<\"14. Nombre d'indeterminees du polynome q\n\";
cout<<\"15. Nombre de monomes du polynome q\n\";
cout<<\"16. Afficher le polynome q\n\";
cout<<\"17. Afficher le degré global du polynome q\n\";
cout<<\"18. Somme des polynomes p et q \n\";
cout<<\"0. Quitter \n\";

cin>>choix;

switch(choix)
{case 1 : cout<<\"Le coefficient est : \"<<m1.coeff()<<endl; break;
case 2 : cout<<\"Le nombre d'indeterminees du monome est : \"<<m1.nb_ind()<<endl; break;
case 3 : cout<<\"Le degre max est : \"<<m1.deg_max()<<endl; break;
case 4 : cout<<\"Le degre homogene est : \"<<m1.deg_hom()<<endl; break;
case 5 : cout<<m1.deg_ind()<<endl; break;
case 6 : m1.ind_pres();cout<<endl; break;
case 7 : cout<<\"La valeur de l'indeterminee est : \"<<m1.evalm()<<endl; break;
case 8 : m1.affichage();cout<<endl; break;
case 10 : cout<<"Le nombre d'indeterminees du polynome est : "<

Mes erreurs :

--------------------Configuration: dauphin2 - Win32 Debug--------------------
Compiling...
cricri.cpp
C:\Mes documents\école\math\cricri.cpp(124) : error C2143: syntax error : missing ',' before '>='
C:\Mes documents\école\math\cricri.cpp(124) : error C2059: syntax error : '>='
C:\Mes documents\école\math\cricri.cpp(124) : warning C4552: '<' : operator has no effect; expected operator with side-effect
C:\Mes documents\école\math\cricri.cpp(124) : error C2143: syntax error : missing ';' before ')'
C:\Mes documents\école\math\cricri.cpp(125) : error C2143: syntax error : missing ';' before '{'
test.cpp
C:\Mes documents\école\math\test.cpp(79) : error C2065: 'somme' : undeclared identifier
Error executing cl.exe.

dauphin2.exe - 5 error(s), 1 warning(s)

Je ne vois pas les erreurs.

Autre question : comment attribuer des valeurs aux indéterminées a,b,c,d... pour donner une valeur au polynome.

Merci d'avance.
0
cricri nature Messages postés 47 Date d'inscription vendredi 17 décembre 2004 Statut Membre Dernière intervention 7 janvier 2005
27 déc. 2004 à 17:45
pour deg_glob()

ça ne fait pas la somme des degré homogènes mais ca me donne les valeurs de chaque degré de chaque monome au lieu de faire la somme des degrés de chaque monome et ensuite comparer pour retourner le plus grand.
0
cricri nature Messages postés 47 Date d'inscription vendredi 17 décembre 2004 Statut Membre Dernière intervention 7 janvier 2005
27 déc. 2004 à 19:23
deg_glob marche maintenant correctement.
0
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
27 déc. 2004 à 19:53
Bon je reprend ta fonction somme:

polynome polynome::somme(const polynome& p, const polynome& q)
{
polynome s(p.nbm+q.nbm, p.nbi+q.nbi);

for(int i=0; i=p.nbm; j<q.nbm;j++)
{

s.liste_monome [j] = q.liste_monome[j-p.nbm];}
return s;
}

BOn, c'est la meme fonction que toi, saut que j'ai arrangé quelque truc.
Mais c'est loin de marcher.
s.liste_monome[i] = p.liste_monome[i] n'a pas de sens. L'ordinateur ne sait pas ce que l'égalité entre monome, donc tu peux pas écrire ca. A moin de faire ce que tu ne veux pas. Surcharger les opérateurs.

Bon mais on peut faire autrement, mais tu t'engages dans des choses compliquées, car tes class ne te permettront pas facilement de le faire. Ca va etre a coup de boucle for. OU alors ..., ya ptet plus simple, je reposterai pour te dire.
0
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
27 déc. 2004 à 21:03
Voila ta fonction somme. Essai de la comprendre, moi en tout cas j'ai appris a me servir de memcpy().

inline int max(int x, int y)
{
return (x>y)?x:y;
}

polynome sum(const polynome& p, const polynome& q)
{
polynome s(max(p.nbi, q.nbi), p.nbm + q.nbm);
for (int i=0; i<p.nbm ; i++)
{
s.liste_monome[i].c = p.liste_monome[i].c;
s.liste_monome[i].n = p.liste_monome[i].n;
delete s.liste_monome[i].tab;
s.liste_monome[i].tab = new int[s.liste_monome[i].n];
memcpy(s.liste_monome[i].tab, p.liste_monome[i].tab, p.liste_monome[i].n * sizeof(int));
}

for (int i=p.nbm; i<p.nbm + q.nbm ; i++)
{
s.liste_monome[i].c = q.liste_monome[i-p.nbm].c;
s.liste_monome[i].n = q.liste_monome[i-p.nbm].n;
delete s.liste_monome[i].tab;
s.liste_monome[i].tab = new int[s.liste_monome[i].n];
memcpy(s.liste_monome[i].tab, q.liste_monome[i-p.nbm].tab, q.liste_monome[i-p.nbm].n * sizeof(int));
}

return s;
}

DOnc pour l'utiliser:

polynome s = sum(p,q);
s.affichage();
cout << endl;

+++
0
cricri nature Messages postés 47 Date d'inscription vendredi 17 décembre 2004 Statut Membre Dernière intervention 7 janvier 2005
27 déc. 2004 à 21:21
Je veux créer une fonction int deg_i_ind() qui retourne le degré suivant une indéterminée donnée c'est-à-dire par exemple suivant a. Il faut donc regarder chaque case 0 de chaque monome et retourner le degré le plus grand.

Ma seconde fonction regarde si une indéterminee par exemple a intervient ou pas dans le polynome.

Ma troisième est la somme. Je n'ai pas vérifier si elle marche mais je le ferai demain.

Ma quatrième donne des valeurs à a,b,c,d... pour calculer la valeur du polynome. Mais comment déclarer a=1 par exemple.

Merci d'avance.
Et merci de m'aider.

a++.


//(math)cricri.h

# include 
# include <cmath>
using namespace std;

typedef char lettre;
class monome{

public:

float c;//coefficient
int n;//nombre d'indeterminee
int* tab;
char* ind;

monome();	//constructeur du monome nul
monome(float coefficient,int MAX_IND);	//constructeur
float coeff();	//coefficient du monome
int nb_ind(); //nombre d'indeterminees
int deg_max();	//degre maximum parmi les indeterminees du monome 
int deg_hom();	//degre homogene (present dans le tableau tab)
int deg_ind();	//degre de la ieme indeterminee
void ind_pres();	//indeterminees effectivement presentes
float evalm();	//evalue un monome a partir des valeurs 
//attribuees aux indeterminees
void affichage(); //affichage du monome

};

class polynome{

public :

int nbm; //nombre de monomes
int nbi; //nombre d'indeterminees
monome* liste_monome; //tableau contenant des monomes
polynome(); //constructeur du monome nul
polynome(int i, int n); //constructeur
int nb_m(); //nombre de monomes
int nb_i(); //nombre d'indeterminees
void affichage(); //affichage du polynome
int deg_glob();
bool inpoly(lettre a);
polynome somme(const polynome& p, const polynome& q);
int deg_i_ind();
};



<td class=code>

//(math)cricri.cpp

#include \"cricri.h\"
# include
# include <cmath>
using namespace std;

monome::monome()
{c=0; n=0;}

monome::monome(float coefficient,int MAX_IND)
{c=coefficient;
n=MAX_IND;
tab=new int[MAX_IND];
}

float monome::coeff()
{return c;}

int monome::nb_ind()
{return n;}

int monome::deg_max()
{monome m;
cout<<\"Le nombre d'indeterminees est : \"<<n<<endl;
for(int j=0;j<n;j++)
{cout<<\"Le \"<<j+1<<\"ieme degre est :\"<<tab[j]<<endl;}
int max=tab[0];
for(int i=1;i<n;i++)
{if(tab[i]>max)
max=tab[i];}
return max;
}

int monome::deg_hom()
{int somme=0;
for(int i=0;i<n;i++)
{cout<<\"Le \"<>i;
for(int j=0;j<n;j++)
{cout<<\"Le \"<<j+1<<\"ieme degre est : \"<<tab[j]<<endl;}
if(i>0 && i<=n)
{cout<<\"Le degre de l'indeterminee \"<>val[j];}
for(int i=0;i<n;i++)
{cout<<\"Le \"<max)
max=liste_monome[i].n;}
return max;}

void polynome::affichage()
{cout<<\"p = \";
for (int i=0; i<nbm; i++)
{liste_monome[i].affichage();
cout<<((i+1<nbm) && (liste_monome[i+1].c!=0)?\" + \":\" \");}
}

int polynome::deg_glob()
{int max = 0;
for (int i=0; i<nbm;i++)
{if (liste_monome[i].deg_hom() > max)
{max = liste_monome[i].deg_hom();}}
cout<<\"Le degre global du polynome est : \"<<max<<endl;
return max;
}

bool inpoly(lettre a)
{bool trouve=false;
for (int i=0; liste_monome[i]!=0 && !trouve;i++)
{trouve=(liste_monome[i]==a);}
return trouve;}

inline int max(int x, int y)
{
return (x>y)?x:y;
}

polynome sum(const polynome& p, const polynome& q)
{
polynome s(max(p.nbi, q.nbi), p.nbm + q.nbm);
for (int i=0; i

<td class=code>

//(math)test.cpp

# include \"cricri.h\"
# include
using namespace std;

void main()
{
monome m1(6,3);
monome m2(2,4);
monome m3(5,4);

polynome p(5,2);
polynome q(3,1);

m1.tab[0] = 1;
m1.tab[1] = 5;
m1.tab[2] = 2;

m2.tab[0] = 4;
m2.tab[1] = 0;
m2.tab[2] = 2;
m2.tab[3] = 1;

m3.tab[0] = 5;
m3.tab[1] = 2;
m3.tab[2] = 8;
m3.tab[3] = 7;

p.liste_monome[0] = m1;
p.liste_monome[1] = m2;

q.liste_monome[0] = m3;

int choix=-1;

while (choix!=0)
{cout<<\"Faites un choix:\n\";
cout<<\"1. Le coefficient du monome i (choisir i)\n\";
cout<<\"2. Nombre d'indeterminees du monome i(choisir i)\n\";
cout<<\"3. Afficher le degre maximum du monome i(choisir i)\n\";
cout<<\"4. Afficher le degre homogene du monome i (choisir i)\n\";
cout<<\"5. Afficher le degre d'une indeterminee du monome i (choisir i)\n\";
cout<<\"6. Indique les indeterminees presentes du monome i (choisir i)\n\";
cout<<\"7. Evaluer m a partir de valeurs attribuees aux indeterminees du monome i (choisir i)\n\";
cout<<\"8. Afficher le monome i (choisir i)\n\";
cout<<\"10. Nombre d'indeterminees du polynome p\n\";
cout<<\"11. Nombre de monomes du polynome p\n\";
cout<<\"12. Afficher le polynome p\n\";
cout<<\"13. Afficher le degre global du polynome p\n\";
cout<<\"14. Nombre d'indeterminees du polynome q\n\";
cout<<\"15. Nombre de monomes du polynome q\n\";
cout<<\"16. Afficher le polynome q\n\";
cout<<\"17. Afficher le degre global du polynome q\n\";
cout<<\"18. Indiquer si une indeterminee intervient ou pas dans le polynome \n\";
cout<<\"19. Somme des ploynomes p et q \n\";
cout<<\"20. Degre suivant une indeterminee \n\";
cout<<\"0. Quitter \n\";

cin>>choix;

switch(choix)
{case 1 : cout<<\"Le coefficient est : \"<<m1.coeff()<<endl; break;
case 2 : cout<<\"Le nombre d'indeterminees du monome est : \"<<m1.nb_ind()<<endl; break;
case 3 : cout<<\"Le degre max est : \"<<m1.deg_max()<<endl; break;
case 4 : cout<<\"Le degre homogene est : \"<<m1.deg_hom()<<endl; break;
case 5 : cout<<m1.deg_ind()<<endl; break;
case 6 : m1.ind_pres();cout<<endl; break;
case 7 : cout<<\"La valeur de l'indeterminee est : \"<<m1.evalm()<<endl; break;
case 8 : m1.affichage();cout<<endl; break;
case 10 : cout<<"Le nombre d'indeterminees du polynome est : "<
0
j'ai oublié mes erreurs :

--------------------Configuration: dauphin2 - Win32 Debug--------------------
Compiling...
cricri.cpp
C:\Mes documents\école\math\cricri.cpp(129) : error C2065: 'liste_monome' : undeclared identifier
C:\Mes documents\école\math\cricri.cpp(129) : error C2109: subscript requires array or pointer type
C:\Mes documents\école\math\cricri.cpp(130) : error C2109: subscript requires array or pointer type
C:\Mes documents\école\math\cricri.cpp(166) : error C2065: 'i' : undeclared identifier
C:\Mes documents\école\math\cricri.cpp(166) : error C2676: binary '<<' : 'class std::basic_istream<char,struct std::char_traits<char> >' does not define this operator or a conversion to a type acceptable to the predefined operator
C:\Mes documents\école\math\cricri.cpp(168) : error C2059: syntax error : 'for'
C:\Mes documents\école\math\cricri.cpp(168) : error C2065: 'j' : undeclared identifier
C:\Mes documents\école\math\cricri.cpp(168) : warning C4552: '<' : operator has no effect; expected operator with side-effect
C:\Mes documents\école\math\cricri.cpp(168) : error C2143: syntax error : missing ';' before ')'
C:\Mes documents\école\math\cricri.cpp(169) : error C2143: syntax error : missing ';' before '{'
C:\Mes documents\école\math\cricri.cpp(169) : error C2059: syntax error : '<'
C:\Mes documents\école\math\cricri.cpp(169) : error C2059: syntax error : ')'
C:\Mes documents\école\math\cricri.cpp(174) : fatal error C1004: unexpected end of file found
test.cpp
C:\Mes documents\école\math\test.cpp(81) : error C2065: 'a' : undeclared identifier
C:\Mes documents\école\math\test.cpp(82) : error C2065: 'sum' : undeclared identifier
C:\Mes documents\école\math\test.cpp(82) : error C2440: 'initializing' : cannot convert from 'int' to 'class polynome'
No constructor could take the source type, or constructor overload resolution was ambiguous
C:\Mes documents\école\math\test.cpp(83) : error C2360: initialization of 's' is skipped by 'case' label
C:\Mes documents\école\math\test.cpp(82) : see declaration of 's'
C:\Mes documents\école\math\test.cpp(83) : error C2065: 'deg_i_ind' : undeclared identifier
C:\Mes documents\école\math\test.cpp(84) : error C2361: initialization of 's' is skipped by 'default' label
C:\Mes documents\école\math\test.cpp(82) : see declaration of 's'
Error executing cl.exe.

dauphin2.exe - 18 error(s), 1 warning(s)
0
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
27 déc. 2004 à 21:54
"Ma seconde fonction regarde si une indéterminee par exemple a intervient ou pas dans le polynome"
=> une indéterminée intervient obligatoirement, mais la valeur de son exposant vaut 0 dans le tableau d'un monome. Donc elle ne pose pas de problème.
cependent juste en passant:

// ta oublié polynome devant inpoly

bool inpoly(lettre a) <==== c'est pas plutot char a ?
{
bool trouve=false;
for (int i=0; liste_monome[i]!=0 && !trouve;i++)

// on peut mettre le && dans le for ??

{
trouve=(liste_monome[i]==a); <== ERREUR !! c'est 'a' .
}
return trouve;
}

Mais ta fonction devrait utiliser la variable nbi: ELLE TE DONNE DIRECTEMENT LA REPONSE:

bool polynome::inpoly(char a)
{
// c'est le code ASCII de la lettre a que j'utilise.
if ( (int)a <= 97+nbi ) return TRUE; else return FALSE;
}

"Ma troisième est la somme. Je n'ai pas vérifier si elle marche mais je le ferai demain."
=> si c'est la mienne, elle marche :) (enfin avec mon exemple ^^)

"Ma quatrième donne des valeurs à a,b,c,d... pour calculer la valeur du polynome. Mais comment déclarer a=1 par exemple."
=> et la, c'est la merde. Il faut le dire. Le c++ ne connait pas le calcul formel, donc impossible de lui dire ca:
il faut calculer tout d'abord chaque monome.
IL faut donc que tu créés une fonction membre a la classe MONOME, qui calcul le monome. Apres tu as juste a faire la somme de tous les monomes pour les polynomes.

Le problème devient donc: comment calculer un monome ?
Pas (très ?)simple.
Voila le prototype de la fonction, qui je pense devrait marcher:

float monome::eval( float *valeurs );

valeurs est un tableau de réel contenant la valeur de indéterminée.Par exemple, si ton monome est 2.x^2.y; tu veux sa valeur pour x 2 et y -1
tu enverras a la fonction le tableau suivant:
indice: | 0 | 1 |
contenu: | 2 | -1 |

Admettons qu'on est un polynome: P = x^2 + y;
Pour x=2 et y = -1. On construit donc ce fameux tableau:
indice: | 0 | 1 |
contenu: | 2 | -1 |

Apres on somme la valeur de la fonction du monome x^2 et celle du monome y. ON envoit le meme tableau pour les deux monomes. Mais le monome 2 (" y ") ne se servira pas de x, puisqu'il n'apparait pas.

T'as compris ?
0
cricri nature Messages postés 47 Date d'inscription vendredi 17 décembre 2004 Statut Membre Dernière intervention 7 janvier 2005
28 déc. 2004 à 08:12
Pour la fonction bool inpoly(char a) lorsque je compile ça m'indique toujours 1 même si m1.tab[0] et m2.tab[0] sont nuls.

Pour la fonction sum ça ne compile pas.

Pour la fonction qui fait la somme des monomes, j'ai déjà créée une fonction (voir case 7) qui me donne la valeur d'un monome en attribuant des valeurs seulement elle ne marche plus correctement car j'ai rentré les valeurs dans un tableau. Pouvez-vous regarder?


//(math)cricri.h

# include 
# include <cmath>
using namespace std;

typedef char lettre;
class monome{

public:

float c;//coefficient
int n;//nombre d'indeterminee
int* tab;
char* ind;
    float* val;
monome();	//constructeur du monome nul
monome(float coefficient,int MAX_IND);	//constructeur
float coeff();	//coefficient du monome
int nb_ind(); //nombre d'indeterminees
int deg_max();	//degre maximum parmi les indeterminees du monome 
int deg_hom();	//degre homogene (present dans le tableau tab)
int deg_ind();	//degre de la ieme indeterminee
void ind_pres();	//indeterminees effectivement presentes
float evalm();	//evalue un monome a partir des valeurs 
//attribuees aux indeterminees
void affichage(); //affichage du monome

};

class polynome{

public :

int nbm; //nombre de monomes
int nbi; //nombre d'indeterminees
monome* liste_monome; //tableau contenant des monomes
polynome(); //constructeur du monome nul
polynome(int i, int n); //constructeur
int nb_m(); //nombre de monomes
int nb_i(); //nombre d'indeterminees
void affichage(); //affichage du polynome
int deg_glob();
bool inpoly(char a);
polynome sum(const polynome& p, const polynome& q);

};



<td class=code>

//(math)cricri.cpp

#include \"cricri.h\"
# include
# include <cmath>
using namespace std;

monome::monome()
{c=0; n=0;}

monome::monome(float coefficient,int MAX_IND)
{c=coefficient;
n=MAX_IND;
tab=new int[MAX_IND];
}

float monome::coeff()
{return c;}

int monome::nb_ind()
{return n;}

int monome::deg_max()
{monome m;
cout<<\"Le nombre d'indeterminees est : \"<<n<<endl;
for(int j=0;j<n;j++)
{cout<<\"Le \"<<j+1<<\"ieme degre est :\"<<tab[j]<<endl;}
int max=tab[0];
for(int i=1;i<n;i++)
{if(tab[i]>max)
max=tab[i];}
return max;
}

int monome::deg_hom()
{int somme=0;
for(int i=0;i<n;i++)
{cout<<\"Le \"<>i;
for(int j=0;j<n;j++)
{cout<<\"Le \"<<j+1<<\"ieme degre est : \"<<tab[j]<<endl;}
if(i>0 && i<=n)
{cout<<\"Le degre de l'indeterminee \"<max)
max=liste_monome[i].n;}
return max;}

void polynome::affichage()
{cout<<\"p = \";
for (int i=0; i<nbm; i++)
{liste_monome[i].affichage();
cout<<((i+1<nbm) && (liste_monome[i+1].c!=0)?\" + \":\" \");}
}

int polynome::deg_glob()
{int max = 0;
for (int i=0; i<nbm;i++)
{if (liste_monome[i].deg_hom() > max)
{max = liste_monome[i].deg_hom();}}
cout<<\"Le degre global du polynome est : \"<<max<<endl;
return max;
}

inline int max(int x, int y)
{
return (x>y)?x:y;
}

polynome polynome::sum(const polynome& p, const polynome& q)
{
polynome s(max(p.nbi, q.nbi), p.nbm + q.nbm);
for (int i=0; i

<table border=0 cellspacing=0 cellpadding=4 bgcolor=#E0E0E0><tr><td class=code>

//(math)test.cpp

# include "cricri.h"
# include
using namespace std;

void main()
{
monome m1(6,3);
monome m2(2,4);
monome m3(5,4);

polynome p(5,2);
polynome q(3,1);

m1.tab[0] = 1;
m1.tab[1] = 5;
m1.tab[2] = 2;

m1.val[0] = 8;
m1.val[1] = 1;
m1.val[2] = 2;

m2.tab[0] = 4;
m2.tab[1] = 0;
m2.tab[2] = 2;
m2.tab[3] = 1;

m2.val[0] = 7;
m2.val[1] = 2;
m2.val[2] = 1;
m2.val[3] = 0;

m3.tab[0] = 5;
m3.tab[1] = 2;
m3.tab[2] = 8;
m3.tab[3] = 7;

p.liste_monome[0] = m1;
p.liste_monome[1] = m2;

q.liste_monome[0] = m3;

int choix=-1;

while (choix!=0)
{cout<<"Faites un choix:\n";
cout<<"1. Le coefficient du monome i (choisir i)\n";
cout<<"2. Nombre d'indeterminees du monome i(choisir i)\n";
cout<<"3. Afficher le degre maximum du monome i(choisir i)\n";
cout<<"4. Afficher le degre homogene du monome i (choisir i)\n";
cout<<"5. Afficher le degre d'une indeterminee du monome i (choisir i)\n";
cout<<"6. Indique les indeterminees presentes du monome i (choisir i)\n";
cout<<"7. Evaluer m a partir de valeurs attribuees aux indeterminees du monome i (choisir i)\n";
cout<<"8. Afficher le monome i (choisir i)\n";
cout<<"10. Nombre d'indeterminees du polynome p\n";
cout<<"11. Nombre de monomes du polynome p\n";
cout<<"12. Afficher le polynome p\n";
cout<<"13. Afficher le degre global du polynome p\n";
cout<<"14. Nombre d'indeterminees du polynome q\n";
cout<<"15. Nombre de monomes du polynome q\n";
cout<<"16. Afficher le polynome q\n";
cout<<"17. Afficher le degre global du polynome q\n";
cout<<"18. Indiquer si une indeterminee intervient ou pas dans le polynome \n";
cout<<"19. Somme des ploynomes p et q \n";
cout<<"0. Quitter \n";

cin>>choix;

switch(choix)
{case 1 : cout<<"Le coefficient est : "<<m1.coeff()<<endl; break;
case 2 : cout<<"Le nombre d'indeterminees du monome est : "<<m1.nb_ind()<<endl; break;
case 3 : cout<<"Le degre max est : "<<m1.deg_max()<<endl; break;
case 4 : cout<<"Le degre homogene est : "<<m1.deg_hom()<<endl; break;
case 5 : cout<<m1.deg_ind()<<endl; break;
case 6 : m1.ind_pres();cout<<endl; break;
case 7 : cout<<"La valeur du monome est : "<<m1.evalm()<<endl; break;
case 8 : m1.affichage();cout<<endl; break;
case 10 : cout<<"Le nombre d'indeterminees du polynome est : "<<tr><td class=code>

Mes erreurs :

--------------------Configuration: dauphin2 - Win32 Debug--------------------
Compiling...
test.cpp
C:\Mes documents\école\math\test.cpp(90) : error C2065: 'sum' : undeclared identifier
C:\Mes documents\école\math\test.cpp(90) : error C2440: 'initializing' : cannot convert from 'int' to 'class polynome'
No constructor could take the source type, or constructor overload resolution was ambiguous
C:\Mes documents\école\math\test.cpp(93) : error C2361: initialization of 's' is skipped by 'default' label
C:\Mes documents\école\math\test.cpp(90) : see declaration of 's'
Error executing cl.exe.

dauphin2.exe - 3 error(s), 0 warning(s)
0
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
28 déc. 2004 à 12:19
bool polynome::inpoly(char a)
{
cout << (int)a << endl;
cout << nbi << endl;
if ( (int) a< 97+nbi ) return true; <===== faut une inégalité stricte.
else return false;
}

Pour la fonction sum faut mettre le prototype dans cricri.h.

Maintenant dans ta fonction evalm(), tu veux faire quoi avec ca:

for(int i=0;i<n;i++)
{
cout<> val[i];
}

de plus a la fin de la fonction:
t'a écris ca:

return f;
cout<<"La valeur du monome est : "<<f<<endl;

tu vois pas un problème ? return ca fait quoi ?

Autrement tu déclares un monome: "monome m;" au début de la fonction, pour faire quoi ?

En gros voici la version corrigé qui marche:

float monome::evalm()
{
cout<<"Le nombre d'indeterminees est : "<<n<<endl;
float* val=new float[n];
for(int i=0;i<n;i++)
{
cout<> val[i];
}
for(int i=0;i<n;i++)
{
cout<<"Le "<<i+1<<"ieme degre est :"<<tab[i]<<endl;
}
cout<<"Le coefficient est : "<<c<<endl;
float f=1;
for(int i=0;i<n;i++)
{
f=f*pow(val[i],tab[i]);
}
f=f*c;
return f;
}

et donc pour faire afficher un résultat tu écris dans main:
cout << UN_MONOME.evalm() << endl;

aller ++
0
cricri nature Messages postés 47 Date d'inscription vendredi 17 décembre 2004 Statut Membre Dernière intervention 7 janvier 2005
28 déc. 2004 à 14:09
bool polynome::inpoly(char a)
{
cout << (int)a << endl;
cout << nbi << endl;
if ( (int) a< 97+nbi ) return true;
else return false;
}

Ca ne marche pas!!
Ne faut-il pas regarder d'abord p.affichage() qui affiche le polynome avec ses indéterminées et y a-t-il un moyen de parcourir p alors ?

"Pour la fonction sum faut mettre le prototype dans cricri.h."
J'ai essayé mais les erreurs sont les mêmes.

float monome::evalm() corrigée est la version que j'avais au départ mais je pensais qu'on pouvait créer un tableau où on rentrerait les valeurs de a, b, ... (m1.ind[0]= 1 par exemple) et on pourrait alors calculer. Ce n'est pas possible??


//(math)cricri.h

# include 
# include <cmath>
using namespace std;

typedef char lettre;
class monome{

public:

float c;//coefficient
int n;//nombre d'indeterminee
int* tab;
char* ind;
    
monome();	//constructeur du monome nul
monome(float coefficient,int MAX_IND);	//constructeur
float coeff();	//coefficient du monome
int nb_ind(); //nombre d'indeterminees
int deg_max();	//degre maximum parmi les indeterminees du monome 
int deg_hom();	//degre homogene (present dans le tableau tab)
int deg_ind();	//degre de la ieme indeterminee
void ind_pres();	//indeterminees effectivement presentes
float evalm();	//evalue un monome a partir des valeurs 
//attribuees aux indeterminees
void affichage(); //affichage du monome

};

class polynome{

public :

int nbm; //nombre de monomes
int nbi; //nombre d'indeterminees
monome* liste_monome; //tableau contenant des monomes
polynome(); //constructeur du monome nul
polynome(int i, int n); //constructeur
int nb_m(); //nombre de monomes
int nb_i(); //nombre d'indeterminees
void affichage(); //affichage du polynome
int deg_glob();
bool inpoly(char a);
polynome sum(const polynome& p, const polynome& q);

};



<td class=code>

//(math)cricri.cpp

#include \"cricri.h\"
# include
# include <cmath>
using namespace std;

monome::monome()
{c=0; n=0;}

monome::monome(float coefficient,int MAX_IND)
{c=coefficient;
n=MAX_IND;
tab=new int[MAX_IND];
}

float monome::coeff()
{return c;}

int monome::nb_ind()
{return n;}

int monome::deg_max()
{monome m;
cout<<\"Le nombre d'indeterminees est : \"<<n<<endl;
for(int j=0;j<n;j++)
{cout<<\"Le \"<<j+1<<\"ieme degre est :\"<<tab[j]<<endl;}
int max=tab[0];
for(int i=1;i<n;i++)
{if(tab[i]>max)
max=tab[i];}
return max;
}

int monome::deg_hom()
{int somme=0;
for(int i=0;i<n;i++)
{cout<<\"Le \"<>i;
for(int j=0;j<n;j++)
{cout<<\"Le \"<<j+1<<\"ieme degre est : \"<<tab[j]<<endl;}
if(i>0 && i<=n)
{cout<<\"Le degre de l'indeterminee \"<>val[j];}
for(int i=0;i<n;i++)
{cout<<\"Le \"< max)
{max = liste_monome[i].deg_hom();}}
cout<<\"Le degre global du polynome est : \"<<max<<endl;
return max;
}

inline int max(int x, int y)
{
return (x>y)?x:y;
}

polynome polynome::sum(const polynome& p, const polynome& q)
{
polynome s(max(p.nbi, q.nbi), p.nbm + q.nbm);
for (int i=0; i

<td class=code>

//(math)test.cpp

# include \"cricri.h\"
# include
using namespace std;

void main()
{
monome m1(6,3);
monome m2(2,4);
monome m3(5,3);

polynome p(5,2);
polynome q(3,1);

m1.tab[0] = 0;
m1.tab[1] = 5;
m1.tab[2] = 2;

m2.tab[0] = 0;
m2.tab[1] = 0;
m2.tab[2] = 2;
m2.tab[3] = 1;

m3.tab[0] = 5;
m3.tab[1] = 2;
m3.tab[2] = 8;
m3.tab[3] = 7;

p.liste_monome[0] = m1;
p.liste_monome[1] = m2;

q.liste_monome[0] = m3;

int choix=-1;

while (choix!=0)
{cout<<\"Faites un choix:\n\";
cout<<\"1. Le coefficient du monome i (choisir i)\n\";
cout<<\"2. Nombre d'indeterminees du monome i(choisir i)\n\";
cout<<\"3. Afficher le degre maximum du monome i(choisir i)\n\";
cout<<\"4. Afficher le degre homogene du monome i (choisir i)\n\";
cout<<\"5. Afficher le degre d'une indeterminee du monome i (choisir i)\n\";
cout<<\"6. Indique les indeterminees presentes du monome i (choisir i)\n\";
cout<<\"7. Evaluer m a partir de valeurs attribuees aux indeterminees du monome i (choisir i)\n\";
cout<<\"8. Afficher le monome i (choisir i)\n\";
cout<<\"10. Nombre d'indeterminees du polynome p\n\";
cout<<\"11. Nombre de monomes du polynome p\n\";
cout<<\"12. Afficher le polynome p\n\";
cout<<\"13. Afficher le degre global du polynome p\n\";
cout<<\"14. Nombre d'indeterminees du polynome q\n\";
cout<<\"15. Nombre de monomes du polynome q\n\";
cout<<\"16. Afficher le polynome q\n\";
cout<<\"17. Afficher le degre global du polynome q\n\";
cout<<\"18. Indiquer si une indeterminee intervient ou pas dans le polynome \n\";
cout<<\"19. Somme des ploynomes p et q \n\";
cout<<\"0. Quitter \n\";

cin>>choix;

switch(choix)
{case 1 : cout<<\"Le coefficient est : \"<<m1.coeff()<<endl; break;
case 2 : cout<<\"Le nombre d'indeterminees du monome est : \"<<m1.nb_ind()<<endl; break;
case 3 : cout<<\"Le degre max est : \"<<m1.deg_max()<<endl; break;
case 4 : cout<<\"Le degre homogene est : \"<<m1.deg_hom()<<endl; break;
case 5 : cout<<m1.deg_ind()<<endl; break;
case 6 : m1.ind_pres();cout<<endl; break;
case 7 : cout<<\"La valeur du monome est : \"<<m1.evalm()<<endl; break;
case 8 : m1.affichage();cout<<endl; break;
case 10 : cout<<"Le nombre d'indeterminees du polynome est : "<

Mes erreurs :
-------------------Configuration: dauphin2 - Win32 Debug--------------------
Compiling...
test.cpp
C:\Mes documents\école\math\test.cpp(82) : error C2361: initialization of 's' is skipped by 'default' label
C:\Mes documents\école\math\test.cpp(81) : see declaration of 's'
Error executing cl.exe.

dauphin2.exe - 1 error(s), 0 warning(s)

Merci d'avance.
0
cricri nature Messages postés 47 Date d'inscription vendredi 17 décembre 2004 Statut Membre Dernière intervention 7 janvier 2005
28 déc. 2004 à 14:30
Pour ma fonction d'évaluation du polynome grâce aux valeurs données aux indéterminées, j'ai écris :

float evalue();//.h

float polynome::evalue()//.cpp
{float val=0;
for (int i=0;i<nbm;i++)
{cout<<liste_monome[i].evalm();
val=val+liste_monome[i].evalm();}
return val;}

case 20 : p.evalue();cout <<endl;break;//main

Mais il faut faire attention car a doit toujours avoir la même valeur ainsi que b, c... dans le polynome et ici on peut vite donner deux valeurs différentes. Comment faire? Ma fonction est-elle bien juste?

Merci.
A++.
0
cricri nature Messages postés 47 Date d'inscription vendredi 17 décembre 2004 Statut Membre Dernière intervention 7 janvier 2005
28 déc. 2004 à 14:52
Pour bool inpoly j'aui touvé quelque chose :

bool inpoly(int j);//.h

bool polynome::inpoly(int j)//.cpp
{for (int i=0;i<nbm ;i++)
{if(liste_monome[i].tab[j]!=0) return true;
else {return false; cout<<false;}}
}

case 18 : cout<<p.inpoly(0)<<endl; break;//.cpp

Seulement si m1.tab[0]=0 et m2.tab[0]=2, a est présent dans le polynome mais ça ne marche pas ici.
0
cricri nature Messages postés 47 Date d'inscription vendredi 17 décembre 2004 Statut Membre Dernière intervention 7 janvier 2005
28 déc. 2004 à 17:21
help me please.
0
Rejoignez-nous