cricri nature
Messages postés47Date d'inscriptionvendredi 17 décembre 2004StatutMembreDernière intervention 7 janvier 2005
-
24 déc. 2004 à 15:14
cricri nature
Messages postés47Date d'inscriptionvendredi 17 décembre 2004StatutMembreDerniè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;
}
}
}
luhtor
Messages postés2023Date d'inscriptionmardi 24 septembre 2002StatutMembreDernière intervention28 juillet 20086 25 déc. 2004 à 00:38
Des fuites de mémoires ? J'ai pas vu d'allocation dynamique, donc comment pourrait-il y en avoir ?
Autant pour moi, je viens de voir en essayer de compiler.
En effet, il faut le plombier :)
Bon pour la deuxième erreur, plus_plus_fab t'a répondu.
Pour la deuxième erreur. TOn constructeur remplace le par ca:
monome::monome()
{
this->c=0;
this->n=0;
}
ca pareil, mais c'est plus clair a mon gout.
En fait l'erreur est dit a l'oublie du ";" a la fin de ta classe polynome.
ET la ca compile sans problème. Prend du temps pour comprendre les destructeurs cependant, sinon ton programme n'est pas exploitable.
cricri nature
Messages postés47Date d'inscriptionvendredi 17 décembre 2004StatutMembreDernière intervention 7 janvier 2005 25 déc. 2004 à 09:07
Bonjour j'ai de nouveau deux erreurs :
//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
int nb_m();
int nb_i();
monome ieme_mono();
};
<code>//poly(cricri.cpp)
#include "cricri.h"
# include
# include <cmath>
using namespace std;
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_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 : "<ici : cin>>i;
for(int j=0;j<nbm;j++)
{cout<<"Le "<<j+1<<"ieme monome est :"<<endl;
cin>>poly[j];}
if(i>0 && i<=nbm)
{cout<<"Le monome "<//poly(test.cpp)
# include \"cricri.h\"
# include
using namespace std;
void main()
{
monome m; polynome p;
m=monome(6,3);
p=polynome(2,5);
int choix=-1;
while (choix!=0)
{cout<<\"Faites un choix:\n\";
cout<<\"1. Le coefficient\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. Indique les indeterminees presentes \n\";
cout<<\"7. Evaluer m a partir de valeurs attribuees aux indeterminees\n\";
cout<<\"8. Afficher le monome\n\";
cout<<\"10. Nombre d'indeterminees du polynome \n\";
cout<<\"11. Nombre de monomes du polynome \n\";
cout<<\"12. Ieme monome du polynome \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 du monome 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;
case 10 : cout<<"Le nombre d'indeterminees du polynome est : ">' : no operator defined which takes a right-hand operand of type 'class monome' (or there is no acceptable conversion)
test.cpp
c:\mes documents\école\math\dauphin2poly\poly\test.cpp(42) : error C2679: binary '<<' : no operator defined which takes a right-hand operand of type 'class monome' (or there is no acceptable conversion)
Error executing cl.exe.
luhtor
Messages postés2023Date d'inscriptionmardi 24 septembre 2002StatutMembreDernière intervention28 juillet 20086 25 déc. 2004 à 13:11
Deja, deuxième fois, enlève ca:
monome m; polynome p;
m=monome(6,3);
p=polynome(2,5);
et met :
monome m(6,3);
polynome p(2,5);
Ensuite, pourquoi postes du des erreurs aussi évidentes. Le message d'erreur est explicite...
Franchement:
cout<<"Le ieme monome du polynome est : ">i;
for(int j=0;j<nbm;j++)
{cout<<"Le "<<j+1<<"ieme monome est :"<<endl;
cin>>poly[j];}
L'erreur est pas ou tu l'indiques, il n'y a pas d'erreur mais qu'est ce que tu veux faire avec ca:
cin>>poly[j];
???????
Il faut surchager l'opérateur << ou >> si tu veux pouvoir écrire ce genre de chose.
C'est pas plutot cout << poly[j].coeff();
Et la ca devrait marcher. Franchement c'est pas dur de comprendre ces erreurs de "mrd".
Je dois que ca m'énerve ces postes la.
Sur ce ++
Vous n’avez pas trouvé la réponse que vous recherchez ?
cricri nature
Messages postés47Date d'inscriptionvendredi 17 décembre 2004StatutMembreDernière intervention 7 janvier 2005 25 déc. 2004 à 16:21
Premièrement lorsque je modifie m et p ça ne marche plus du tout donc je laisse ce que j'ai fait!
Ensuite, lorsque j'ecrit :
cout<<"Le ieme monome du polynome est : "<>poly[j]; et non cout << poly[j].coeff();
Je suis désolé. Je sais bien que ce sont des erreurs de "mrd" mais je ne suis pas très douée en c++ et je ne comprend pas où sont les erreurs lorsque j'écris : '<<' et '>>'.
cricri nature
Messages postés47Date d'inscriptionvendredi 17 décembre 2004StatutMembreDernière intervention 7 janvier 2005 25 déc. 2004 à 22:16
En fait, je veux créer une fonction qui me permet de saisir tous mes monomes et les met dans le tableau poly(une case pour un monome). Ensuite ieme_mono doit me permettre d'accéder à un monome i. Ensuite deg_i_ind doit me permettre d'accéder au tableau tab qui contient les degrés du monome i .
Pour deg_glob() je veux saisir mes monomes puis regarder quel monome a le degré homogène le plus élevé c'est-à-dire que je veux regarder chaque monome et les valeurs des degrés stockées dans tab pour ce monome pour en faire la somme et retourner le maximum.
Peux-tu m'expliquer à quoi sert ici ostream et que représente c?
luhtor
Messages postés2023Date d'inscriptionmardi 24 septembre 2002StatutMembreDernière intervention28 juillet 20086 25 déc. 2004 à 23:36
Et bien fait, le "c" c'est le "c" de ta classe monome. Avec ces deux fonctions, quand tu fais cin >> TON_MONOME, la valeur que tu entres au clavier, c'est le coefficient du monome.
De meme, quand tu fais cout << UN_MONOME, ca affiche le coefficient du monome.
Ostream ici, c'est simplement un flux de caractère que cout affichera, ou en tout cas, c'est comme ca que je le comprend :)
Juste une question, le degré homogène, c'est quoi ? le degré je vois tres bien, mais j'ai jamais entendu parlé d'homogonéité d'un degré :)
cricri nature
Messages postés47Date d'inscriptionvendredi 17 décembre 2004StatutMembreDernière intervention 7 janvier 2005 26 déc. 2004 à 12:40
mon programme est bon jusqu'à :
Code:
//(math)cricri.h
# include
# include <cmath>
using namespace std;
class monome{
float c;//coefficient
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; //tableau contenant des monomes
public :
polynome(); //constructeur du monome nul
polynome(int i, int n); //constructeur
int nb_m(); //nombre de monomes
int nb_i(); //nombre d'indeterminees
};
Code:
//(math)cricri.cpp
#include "cricri.h"
# include
# include <cmath>
using namespace std;
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_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()
{
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 monome est : "<<c<<" * ";
for (int k=0;k<n-1;k++)
{cout<
using namespace std;
void main()
{
monome m; polynome p;
m=monome(6,3);
p=polynome(2,5);
int choix=-1;
while (choix!=0)
{cout<<"Faites un choix:\n";
cout<<"1. Le coefficient\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. Indique les indeterminees presentes \n";
cout<<"7. Evaluer m a partir de valeurs attribuees aux indeterminees\n";
cout<<"8. Afficher le monome\n";
cout<<"10. Nombre d'indeterminees du polynome \n";
cout<<"11. Nombre de monomes du polynome \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 du monome 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;
case 10 : cout<<"Le nombre d'indeterminees du polynome est : "<
# include <cmath>
using namespace std;
class polynome{
int nbm; //nombre de monomes
int nbi; //nombre d'indeterminees
monome* poly; //tableau ou je stocke des monomes
public :
polynome(); //constructeur du monome nul
polynome(int i, int n); //constructeur
int nb_m(); //nombre de monomes
int nb_i(); //nombre d'indeterminees
# include "cricri.h"
# include
using namespace std;
void main()
{
monome m; polynome p;
m=monome(6,3);
p=polynome(2,1);
int choix=-1;
while (choix!=0)
{cout<<"Faites un choix:\n";
cout<<"1. Le coefficient\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. Indique les indeterminees presentes \n";
cout<<"7. Evaluer m a partir de valeurs attribuees aux indeterminees\n";
cout<<"8. 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<<"13. saisie \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 du monome 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;
case 10 : cout<<"Le nombre d'indeterminees du polynome est : "<>which.m; break;
default : cout<<"Pas le bon cas."<<endl; break;
}
}
}
Il faut dire que je ne maîtrise pas très bien ostream et istream. Pouvez-vous m'indiquer la solution en me l'expliquant pas à pas. Je vous en remercie d'avance.
N'y a-t-il pas d'autre solution que ostream et istream?
De plus, tu es bien d'accord, elles s'appliquent à un MONOME ! donc faut pas les mettres dans la classe POLYNOME, mais dans la classe MONOME, dans la partie public.
Mais explique exactement ce que tu veux que ca fasse lorsque l'utilisateur choisit "afficher".
Si tu modifies la fonction comme ci dessous:
inline ostream & operator << (ostream & chaine, const monome & which)
{
return chaine << "Monome : " << which.c << ".X^" << which.n";
}
cout << m; affichera : " 6.X^3"
Cette fonction permet de dire au pc ce qu'il faut faire quand tu lui dis d'afficher un monome. Soit logique cout << UN_MONOME, CA NE VEUT RIEN DIRE POUR UN PC. IL ne sait meme pas ce que c'est un monome.
Bon tu veux afficher un polynome en écrivant cout << p;
IL FAUT DONC PRECISER AU PC CE QUE CA VEUT DIRE:
Il faut placer cette déclaration dans la classe POLYNOME:
puis l'implémentation en bas de la classe:
friend inline std::ostream& operator << (std::ostream& chaine, const polynome& which)
{
int i=0;
while (which.poly != NULL)
{
chaine << which.poly << std::endl;
}
}
Essai de comprendre ce que ca veut dire, c'est pas compliqué.
Autrement bien sur qu'il y a d'autre solution que la surcharge d'opérateur, mais c'est de loin:
- le plus pratique
- le plus élégant
- le plus instructif (puisque c'est tres utile)
SI c'est pas ce que tu veux. Précises exactement ce que tu veux que ca fasse.
SI mon message précédent de s'affiche pas:
Remplace ces deux lignes de main.cpp
case 12 : cout<<which.m; break;
case 13 : cin>>which.m; break;
en
case 12 : cout<< p; break;
//case 13 : cin>>which.m; break;
COmment la deuxième ligne, deja si tu arrives à faire afficher un monome et un polynome correctement, on verra le reste après.
De plus j'ai une question:
Quand j'écris:
P(X) = 2 + 4X + 8X^2
On est bien d'accord 4X c'est un monome. et P(X) c'est un polynome.
DOnc un degré homogène d'un monome, c'est son degré tout cour.
luhtor
Messages postés2023Date d'inscriptionmardi 24 septembre 2002StatutMembreDernière intervention28 juillet 20086 26 déc. 2004 à 14:55
Décidément je n'y arrive pas, je comprend pas tes définitions de monome et polynome:
Voic les deux classes que j'aurais déclaré, et dis moi si t'es daccord:
class monome
{
public:
float coef; // coefficient du monome
int exp; // exposant
monome(float c 0.0f, int e 0): coef(c), exp(e) { } // constructeur qui marche dans tous les cas, c'est l'équivalent des deux a toi.
... // toutes tes fonctions
};
class polynome
{
public:
monome* list_monome; // contient tous les monomes.
... // toutes tes fonctions
};
Je vois pas ce que tu appelles:
- int *tab dans la classe monome
et ca:
- int nbm; //nombre de monomes dans class polynome
- int nbi; //nombre d'indeterminees dans class polynome
tout est deja contenu dans le tableau, alors pourquoi ces deux variables ?
cricri nature
Messages postés47Date d'inscriptionvendredi 17 décembre 2004StatutMembreDernière intervention 7 janvier 2005 26 déc. 2004 à 17:45
Je n'ai pas déclaré deux main mais comme j'ai recopié mon fichier j'en est deux.
Je préfère laissé mes 2 constructeurs monomes car c'est comme cela que j'ai appris à les faire.
Je ne comprend pas std::........
Je ne l'ai pas appris. Donne moi un truc plus simple svp.
int* tab est un tableau où je vais stocker les exposants de mon monome car un monome est du genre : 4X*Y^2*Z^7*P^5
Donc le degré homogène est la somme des degrés.
nbm est utile pour limiter la taille du tableau.
Pour afficher un monome, j'ai le cas 8. Je veux afficher un polynome grace à un tableau où chaque case représente un monome et pour cela veut faire la somme de tous les monomes de mon tableau.
//poly(cricri.h)
# include
# include <cmath>
using namespace std;
class monome{
float c;
int n;//nombre d'indeterminee
public:
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
};
class polynome{
int nbm; //nombre de monomes
int nbi; //nombre d'indeterminees
public :
monome* liste_monome; //tableau ou je stocke 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
friend inline std::ostream & operator << (std::ostream & chaine, const polynome & which);
};
<code>
//poly(cricri.cpp)
#include "cricri.h"
# include
# include <cmath>
using namespace std;
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_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 : "<
//poly(test.cpp)
# include \"cricri.h\"
# include
using namespace std;
void main()
{
monome m; polynome p;
m=monome(6,3);
p=polynome(2,1);
int choix=-1;
while (choix!=0)
{cout<<\"Faites un choix:\n\";
cout<<\"1. Le coefficient\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. Indique les indeterminees presentes \n\";
cout<<\"7. Evaluer m a partir de valeurs attribuees aux indeterminees\n\";
cout<<\"8. 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 : \"<<m.coeff()<<endl; break;
case 2 : cout<<\"Le nombre d'indeterminees du monome 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;
case 10 : cout<<"Le nombre d'indeterminees du polynome est : "<
J'ai une erreur :
--------------------Configuration: poly - Win32 Debug--------------------
Compiling...
cricri.cpp
c:\mes documents\école\math\dauphin2poly\poly\cricri.cpp(121) : fatal error C1004: unexpected end of file found
Skipping... (no relevant changes detected)
test.cpp
Error executing cl.exe.
cricri nature
Messages postés47Date d'inscriptionvendredi 17 décembre 2004StatutMembreDernière intervention 7 janvier 2005 26 déc. 2004 à 18:29
Je n'ai pas 2 fonctions main mais j'ai fait une copie de mon fichier.
Je garde mes constructerus comme ils sont car j'ai appris à le faire comme cela.
int* tab est un tableau où je stocke les degrés des indéterminées du monome.
un monome est du type : 4*Y^2*Z^6*P^2
Il n'y a pas forcément qu'une seule indéterminée.
Mon cas 8 affiche un monome.
nbm est utile pour limiter la taille du tableau liste_monome.
Je ne comprend pas std::..... donc peux-tu me l'expliquer sans utiliser std et ostream et istream. Merci d'avance car je ne l'ai pas appris. Je suis débutante. Je fais du c++ depuis octobre.
//poly(cricri.h)
# include
# include <cmath>
using namespace std;
class monome{
float c;
int n;//nombre d'indeterminee
public:
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
};
class polynome{
int nbm; //nombre de monomes
int nbi; //nombre d'indeterminees
public :
monome* liste_monome; //tableau ou je stocke 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
friend inline std::ostream & operator << (std::ostream & chaine, const polynome & which);
};
<code>
//poly(cricri.cpp)
#include "cricri.h"
# include
# include <cmath>
using namespace std;
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_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 : "<
//poly(test.cpp)
# include \"cricri.h\"
# include
using namespace std;
void main()
{
monome m; polynome p;
m=monome(6,3);
p=polynome(2,1);
int choix=-1;
while (choix!=0)
{cout<<\"Faites un choix:\n\";
cout<<\"1. Le coefficient\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. Indique les indeterminees presentes \n\";
cout<<\"7. Evaluer m a partir de valeurs attribuees aux indeterminees\n\";
cout<<\"8. 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 : \"<<m.coeff()<<endl; break;
case 2 : cout<<\"Le nombre d'indeterminees du monome 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;
case 10 : cout<<"Le nombre d'indeterminees du polynome est : "<
luhtor
Messages postés2023Date d'inscriptionmardi 24 septembre 2002StatutMembreDernière intervention28 juillet 20086 26 déc. 2004 à 18:39
Bon t'aurais pu regarder 2 min la...
T'a oublié un "}" au while dans la fonction inline std::ostream & operator << (std::ostream & chaine, const polynome & which)
de cricri.cpp.
Mon compileur est peut etre plus rigoureux que le tient, mais tu as une petite erreur:
void monome::ind_pres()
{
for(int j=0;j<n;j++)
{
cout<<"Le "<<j+1<<"ieme degre est :"<<endl;
cin>>tab[j];}
int i=0;
for(;i<n;i++)
{
if(tab[i]!=0)
cout<<"L'indeterminee "<<i+1<<" est presente. "<<endl;
}
cout<<"L'indeterminee "<<i+1<<" n'est pas presente. "<<endl;return ;
}
Le "int i =0", tu l'as mis dans la boucle for, faut le sortir comme ci dessus sinon problème de portée lorsque tu utilises "i" hors de la boucle.
Bon autrement, je te posterais le programme qui marche, ou a peu près ce soir...