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

cricri nature Messages postés 47 Date d'inscription vendredi 17 décembre 2004 Statut Membre Dernière intervention 7 janvier 2005
29 déc. 2004 à 17:53
help please.
0
cricri nature Messages postés 47 Date d'inscription vendredi 17 décembre 2004 Statut Membre Dernière intervention 7 janvier 2005
29 déc. 2004 à 21:28
Il n'accèpte pas la somme car lorsque je compile il m'indique :
Debug Assertion Failed.

Ma fonction est:

dans la classe polynome : //.h

friend polynome somme(const polynome& p, const polynome& q);  //somme de deux polynomes



dans //.cpp


polynome somme(const polynome& p, const polynome& q)
{
polynome s(max(p.nbi, q.nbi), p.nbm + q.nbm);
for (int i=0; i</tr></table>

dans main :

<table border=0 cellspacing=0 cellpadding=4 bgcolor=#E0E0E0><tr><td class=code>
case 22 : somme(p,q);cout<<endl; break;
0
cricri nature Messages postés 47 Date d'inscription vendredi 17 décembre 2004 Statut Membre Dernière intervention 7 janvier 2005
30 déc. 2004 à 14:27
Ne t'énerve pas. Ce n'est pas ma faute!!! J'ai essayé plusieurs choses mais aucune ne marche.
Voici mon programme en entier :


//polynome.h

# include 
# include <cmath>
using namespace std;
typedef char lettre;

class monome{

public:

float c;//coefficient
int n;//nombre d'indéterminées du monome
int* tab;//tableau contenant les degrés du monome
    
monome();	//constructeur du monome nul
monome(float coefficient,int MAX_IND);	//constructeur

float coeff();	//coefficient du monome
int deg_max();	//degré maximum parmi les indéterminées du monome 
int deg_hom();	//degré homogene
void ind_pres();	//indéterminées effectivement présentes
int deg_ind();	//degré de la ième indéterminée
float evalm();	//évalue un monome à partir des valeurs attribuées aux indéterminées

int ind_pres(int i); //	regarde si l'indéterminée i+1 est présente
int nb_ind(); //nombre d'indéterminées du monome
void affichage(); //affichage du monome

};

class polynome{

public :

int nbm; //nombre de monomes
int nbi; //nombre d'indéterminées
monome* liste_monome; //tableau contenant des monomes
polynome* polynome1; //tableau contenant des polynomes

polynome(); //constructeur du monome nul
polynome(int i, int n); //constructeur
int deg_i_ind(int i); //degré suivant une indéterminée 
int deg_glob(); //degré global
void inpoly(int j); //indéterminée intervient ou pas dans le polynome
friend polynome somme(const polynome& p1, const polynome& p2); //somme de deux polynomes
void derive_ind(int j); //dérivation suivant une indéterminée
float evalu();//il faut saisir les mêmes valeurs pour une indéterminée i

int nb_m(); //nombre de monomes du polynome
int nb_i(); //nombre d'indéterminées du polynome
void affichage(); //affichage du polynome
float* saisir_ind(); //saisir les indéterminées
    

};



//polynome.cpp

#include "polynome.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::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 "<d)
d=liste_monome[j].tab[i];}
cout<<"Le degre suivant l'indeterminee "< max)
{max = liste_monome[i].deg_hom();}}
cout<<"Le degre global du polynome est : "<<max<<endl;
return max;}

void polynome::inpoly(int j)
{int somme=0;
for (int i = 0; i< nbm; i++)
{if ( liste_monome[i].ind_pres(j) == 1 ) 
somme=somme+1;}
if (somme>0)
{cout<<"L'indeterminee est presente.";}
else cout<<"L'indeterminee n'est pas presente.";}

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

polynome somme(const polynome& p1, const polynome& p2)
{
polynome s(max(p1.nbi, p2.nbi), p1.nbm + p2.nbm);
for (int i=0; i=0
{affichage();
cout << endl;
for(int i=0;i<nbm;i++)
{if(liste_monome[i].tab[j]==0) 
{liste_monome[i].c=0;}
if(liste_monome[i].tab[j]!=0)
{liste_monome[i].c *= liste_monome[i].tab[j];
liste_monome[i].tab[j] -= 1;}
}
cout<<endl;
cout<<"Le polynome derivee suivant l'indeterminee "<<j+1<<" est :"<<endl;    
affichage();}

float polynome::evalu()
{float P=0;
for (int i=0;i<nbm;i++)
{P=P+liste_monome[i].evalm();}
cout<<"La valeur du polynome est :"<<" P = "<>val[j];}
return val;
cout<<val;}




//test.cpp

# include "polynome.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);
polynome s(5,3);

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

m2.tab[0] = 3;
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;

s.polynome1[0]= p;
s.polynome1[1]= q;

 int choix=-1;
 
 while (choix!=0)
 	{cout<<"Faites un choix:\n";
 	 cout<<"10. Afficher le polynome p. \n";
 cout<<"11. Afficher le polynome q. \n";
 cout<<"12. Indique le degre suivant une indeterminee donnee pour p. \n";
 cout<<"13. Indique le degre suivant une indeterminee donnee pour q. \n";
 cout<<"14. Afficher le degre global du polynome p. \n";
 cout<<"15. Afficher le degre global du polynome q. \n";
 cout<<"16. Indiquer si une indeterminee intervient ou non dans le polynome p. \n";
 cout<<"17. Indiquer si une indeterminee intervient ou non dans le polynome q. \n";
 cout<<"18. Deriver le polynome p suivant une indeterminee.\n";
 cout<<"19. Deriver le polynome q suivant une indeterminee.\n";
 cout<<"20. Calcule la valeur du polynome p en un point (il faut saisir les memes valeurs pour une indeterminee i). \n";
 cout<<"21. Calcule la valeur du polynome q en un point (il faut saisir les memes valeurs pour une indeterminee i). \n";
 
 cout<<"22. Faire la somme de deux polynomes. \n";
 cout<<"0. Quitter \n";
 	 
 	 cin>>choix;
 	 
 	 switch(choix)
 {	 case 10 : p.affichage();cout<<endl; break;
 case 11 : q.affichage();cout<<endl; break;
 case 12 : p.deg_i_ind(1);cout<<endl; break;
 case 13 : q.deg_i_ind(1);cout<<endl; break;
 case 14 : p.deg_glob();cout<<endl; break;
 case 15 : q.deg_glob();cout<<endl; break;
 case 16 : p.inpoly(0);cout<<endl; break;
 case 17 : q.inpoly(0);cout<<endl; break;
 case 18 : p.derive_ind(1);cout<<endl; break;
 case 19 : q.derive_ind(1);cout<<endl; break;
 case 20 : p.evalu();cout<<endl; break;
 case 21 : q.evalu();cout<<endl; break;
  
 case 22 : polynome s;s=somme(p,q);cout<<endl; break;
 default : cout<<"Pas le bon cas."<<endl; break;
 	 	}
 
 	 }

 }
 

0
cricri nature Messages postés 47 Date d'inscription vendredi 17 décembre 2004 Statut Membre Dernière intervention 7 janvier 2005
30 déc. 2004 à 14:29
Mon erreur :

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

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

La ligne 76 est celle où se trouve default.
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
30 déc. 2004 à 18:05
T'inquiète pas, je m'énerve pas :) bon je regarde ca, et je repost, car chez moi il n'y a pas de problème, ca marche impec, donc je me dis, si ca bug chez toi, c'est que tu as fait une erreur.
0
cricri nature Messages postés 47 Date d'inscription vendredi 17 décembre 2004 Statut Membre Dernière intervention 7 janvier 2005
30 déc. 2004 à 19:23
Je suis désolée mais ça ne marche toujours pas.
Ca compile mais j'ai un message d'erreur lorsque je tape 22.
Peux-tu me donner ton e-mail privé pour que je te l'envoie?

Mon code :

//polynome.h

# include 
# include <cmath>
using namespace std;
typedef char lettre;

class monome{

public:

float c;//coefficient
int n;//nombre d'indéterminées du monome
int* tab;//tableau contenant les degrés du monome
    
monome();	//constructeur du monome nul
monome(float coefficient,int MAX_IND);	//constructeur

float coeff();	//coefficient du monome
int deg_max();	//degré maximum parmi les indéterminées du monome 
int deg_hom();	//degré homogene
void ind_pres();	//indéterminées effectivement présentes
int deg_ind();	//degré de la ième indéterminée
float evalm();	//évalue un monome à partir des valeurs attribuées aux indéterminées

int ind_pres(int i); //	regarde si l'indéterminée i+1 est présente
int nb_ind(); //nombre d'indéterminées du monome
void affichage(); //affichage du monome

};

class polynome{

public :

int nbm; //nombre de monomes
int nbi; //nombre d'indéterminées
monome* liste_monome; //tableau contenant des monomes
polynome* polynome1; //tableau contenant des polynomes

polynome(); //constructeur du monome nul
polynome(int i, int n); //constructeur
int deg_i_ind(int i); //degré suivant une indéterminée 
int deg_glob(); //degré global
void inpoly(int j); //indéterminée intervient ou pas dans le polynome
friend polynome somme(const polynome& p1, const polynome& p2); //somme de deux polynomes
void derive_ind(int j); //dérivation suivant une indéterminée
float evalu();//il faut saisir les mêmes valeurs pour une indéterminée i

int nb_m(); //nombre de monomes du polynome
int nb_i(); //nombre d'indéterminées du polynome
void affichage(); //affichage du polynome
float* saisir_ind(); //saisir les indéterminées
    

};



//polynome.cpp

#include "polynome.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::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 "<d)
d=liste_monome[j].tab[i];}
cout<<"Le degre suivant l'indeterminee "< max)
{max = liste_monome[i].deg_hom();}}
cout<<"Le degre global du polynome est : "<<max<<endl;
return max;}

void polynome::inpoly(int j)
{int somme=0;
for (int i = 0; i< nbm; i++)
{if ( liste_monome[i].ind_pres(j) == 1 ) 
somme=somme+1;}
if (somme>0)
{cout<<"L'indeterminee est presente.";}
else cout<<"L'indeterminee n'est pas presente.";}

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

polynome somme(const polynome& p1, const polynome& p2)
{
polynome s(max(p1.nbi, p2.nbi), p1.nbm + p2.nbm);
for (int i=0; i=0
{affichage();
cout << endl;
for(int i=0;i<nbm;i++)
{if(liste_monome[i].tab[j]==0) 
{liste_monome[i].c=0;}
if(liste_monome[i].tab[j]!=0)
{liste_monome[i].c *= liste_monome[i].tab[j];
liste_monome[i].tab[j] -= 1;}
}
cout<<endl;
cout<<"Le polynome derivee suivant l'indeterminee "<<j+1<<" est :"<<endl;    
affichage();}

float polynome::evalu()
{float P=0;
for (int i=0;i<nbm;i++)
{P=P+liste_monome[i].evalm();}
cout<<"La valeur du polynome est :"<<" P = "<>val[j];}
return val;
cout<<val;}




//test.cpp

# include "polynome.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);
polynome s(5,3);

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

m2.tab[0] = 3;
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<<"10. Afficher le polynome p. \n";
 cout<<"11. Afficher le polynome q. \n";
 cout<<"12. Indique le degre suivant une indeterminee donnee pour p. \n";
 cout<<"13. Indique le degre suivant une indeterminee donnee pour q. \n";
 cout<<"14. Afficher le degre global du polynome p. \n";
 cout<<"15. Afficher le degre global du polynome q. \n";
 cout<<"16. Indiquer si une indeterminee intervient ou non dans le polynome p. \n";
 cout<<"17. Indiquer si une indeterminee intervient ou non dans le polynome q. \n";
 cout<<"18. Deriver le polynome p suivant une indeterminee.\n";
 cout<<"19. Deriver le polynome q suivant une indeterminee.\n";
 cout<<"20. Calcule la valeur du polynome p en un point (il faut saisir les memes valeurs pour une indeterminee i). \n";
 cout<<"21. Calcule la valeur du polynome q en un point (il faut saisir les memes valeurs pour une indeterminee i). \n";
 
 cout<<"22. Faire la somme de deux polynomes. \n";
 cout<<"0. Quitter \n";
 	 
 	 cin>>choix;
 	 polynome s;
 	 switch(choix)
 {	 case 10 : p.affichage();cout<<endl; break;
 case 11 : q.affichage();cout<<endl; break;
 case 12 : p.deg_i_ind(1);cout<<endl; break;
 case 13 : q.deg_i_ind(1);cout<<endl; break;
 case 14 : p.deg_glob();cout<<endl; break;
 case 15 : q.deg_glob();cout<<endl; break;
 case 16 : p.inpoly(0);cout<<endl; break;
 case 17 : q.inpoly(0);cout<<endl; break;
 case 18 : p.derive_ind(1);cout<<endl; break;
 case 19 : q.derive_ind(1);cout<<endl; break;
 case 20 : p.evalu();cout<<endl; break;
 case 21 : q.evalu();cout<<endl; break;
  
 case 22 : s=somme(p,q);cout<<endl; break;
 default : cout<<"Pas le bon cas."<<endl; break;
 	 	}
 
 	 }

 }
 



Merci d'avance.
0
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
30 déc. 2004 à 22:04
Tient tu peux le mettre ici:

ftp://cppfrance:cppfrance@luhtorftp.serveftp.com

tu mets le programme dans le répertoires avec un nom explicite :)

Chez moi ton programme tel quel ne marche pas, j'ai juste 2 modifs a faire:
je dois mettre
int main() et non void main()

et donc return 0; juste avant l'incolade finale.
0
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
Avez-vous trouver l'erreur?
Aidez-moi svp.
0
Rejoignez-nous