Jai besoin daide jai un projet en POO
aimac
-
Char Snipeur Messages postés 10112 Date d'inscription Statut Contributeur Dernière intervention -
Char Snipeur Messages postés 10112 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
1. Dans l’objectif de gérer une pile dynamique de nombres de type entier, concevoir
une classe correspondant à ce type de structure, en tenant compte des éléments
suivants :
- Chaque objet créé à partir de cette classe, doit posséder son propre tableau
dynamique de nombre d’éléments quelconque.
- Accéder à une case du tableau dynamique d’un objet à l’aide d’une fonction.
- Accéder à une case du tableau dynamique d’un objet à l’aide de l’opérateur [ ]
qu’il faut surdéfinir.
- Ajouter une donnée du tableau dynamique d’un objet à une autre donnée du
tableau dynamique d’un autre objet à l’aide de l’opérateur + qu’il faut surdéfinir.
- Surdéfinir les opérateurs << et >> pour lire ou écrire dans le tableau dynamique
d’un objet.
- Donner un exemple de classe de gestion des exceptions, en utilisant une fonction
virtuelle (polymorphe) d’affichage de messages d’erreurs, en tenant compte de
l’héritage.
est c ke vous pouver maider sil vous plait
1. Dans l’objectif de gérer une pile dynamique de nombres de type entier, concevoir
une classe correspondant à ce type de structure, en tenant compte des éléments
suivants :
- Chaque objet créé à partir de cette classe, doit posséder son propre tableau
dynamique de nombre d’éléments quelconque.
- Accéder à une case du tableau dynamique d’un objet à l’aide d’une fonction.
- Accéder à une case du tableau dynamique d’un objet à l’aide de l’opérateur [ ]
qu’il faut surdéfinir.
- Ajouter une donnée du tableau dynamique d’un objet à une autre donnée du
tableau dynamique d’un autre objet à l’aide de l’opérateur + qu’il faut surdéfinir.
- Surdéfinir les opérateurs << et >> pour lire ou écrire dans le tableau dynamique
d’un objet.
- Donner un exemple de classe de gestion des exceptions, en utilisant une fonction
virtuelle (polymorphe) d’affichage de messages d’erreurs, en tenant compte de
l’héritage.
est c ke vous pouver maider sil vous plait
A voir également:
- Jai besoin daide jai un projet en POO
- Filigrane projet - Guide
- Gant projet - Télécharger - Gestion de projets
- Comment projeter une image sur un mur - Forum TV & Vidéo
- Projet windows movie maker - Télécharger - Montage & Édition
- Projeter une image sur un mur - Forum TV & Vidéo
4 réponses
class pile_entier
{
int *p;
int taille;
int ne;
public:
pile_entier(int n=6)
{
taille=n;
p=new int[taille];
ne=0;
srand(time(0));//initaliser le generateur de nbre aleatoires
for (int i=0;i<taille;i++)
{
p[i]=rand();}}//generer un nbre aleatoire .
int & operator[] (int i)
{
return p[i];
}
friend pile_entier & operator + (pile_entier &,pile_entier & );
friend ostream & operator << (ostream & , pile_entier &);
friend istream & operator >> (istream & , pile_entier &);
};
pile_entier & operator + (pile_entier &p1,pile_entier &p2 )
{
pile_entier p ;
for (int i=0;i<p.taille;i++)
p[i]=p2[i]+p1[i];
return p ;
}
ostream & operator << (ostream & cout , pile_entier & p)
{
for(int i=0;i<p.taille;i++)
{
cout<<p[i]<<endl;
}
};
int main()
{
pile_entier p1(5);
cout<<p1;
cout<<p1[4]<<endl;
pile_entier p2(5);
cout<<p2;
pile_entier p (5);
cout<<p;
p[4]=p1[4]+p2[4];
cout<<p[4];
pile_entier p3;
p3=p1+p2
cout<<p3;
system ("pause");
return 0;
}
{
int *p;
int taille;
int ne;
public:
pile_entier(int n=6)
{
taille=n;
p=new int[taille];
ne=0;
srand(time(0));//initaliser le generateur de nbre aleatoires
for (int i=0;i<taille;i++)
{
p[i]=rand();}}//generer un nbre aleatoire .
int & operator[] (int i)
{
return p[i];
}
friend pile_entier & operator + (pile_entier &,pile_entier & );
friend ostream & operator << (ostream & , pile_entier &);
friend istream & operator >> (istream & , pile_entier &);
};
pile_entier & operator + (pile_entier &p1,pile_entier &p2 )
{
pile_entier p ;
for (int i=0;i<p.taille;i++)
p[i]=p2[i]+p1[i];
return p ;
}
ostream & operator << (ostream & cout , pile_entier & p)
{
for(int i=0;i<p.taille;i++)
{
cout<<p[i]<<endl;
}
};
int main()
{
pile_entier p1(5);
cout<<p1;
cout<<p1[4]<<endl;
pile_entier p2(5);
cout<<p2;
pile_entier p (5);
cout<<p;
p[4]=p1[4]+p2[4];
cout<<p[4];
pile_entier p3;
p3=p1+p2
cout<<p3;
system ("pause");
return 0;
}
Salut.
C'est pas mal ce que tu a fait.
En revanche ça manque clairement d'éléments de contrôle. Par exemple l'opérateur + : tu alloues et assigne par défaut, mais imagine que p1 et p2 n'aient pas la même taille et qu'elles soient différentes de 6 ! plein d'erreur mémoire en prévition.
Selon ce que tu cherches à faire, tu peux ajouter des controles dans operator+ ou dans operator[] pour éviter de lire en dehors du tableau.
Il manque un fonction bien utile lorsque l'on fait des piles, une fonction permettant d'ajouter un élément à une pile. Et une fonction permettant de l'enlever.
A l'avenir lorsque tu postes un code, utilise les balises de code pour concerver l'indentation : c'est plus lisible.
C'est pas mal ce que tu a fait.
En revanche ça manque clairement d'éléments de contrôle. Par exemple l'opérateur + : tu alloues et assigne par défaut, mais imagine que p1 et p2 n'aient pas la même taille et qu'elles soient différentes de 6 ! plein d'erreur mémoire en prévition.
Selon ce que tu cherches à faire, tu peux ajouter des controles dans operator+ ou dans operator[] pour éviter de lire en dehors du tableau.
Il manque un fonction bien utile lorsque l'on fait des piles, une fonction permettant d'ajouter un élément à une pile. Et une fonction permettant de l'enlever.
A l'avenir lorsque tu postes un code, utilise les balises de code pour concerver l'indentation : c'est plus lisible.
merci pour vos remarque cet une bonne remarque concerant loperteur +
en tt cas pour les fct depiler et emplier , c été pas demander ds le projet mais voila le code
#include<iostream.h>
class pile_entier
{ int taille;
int ne;
int *p;
public:
pile_entier (int n=7)
{
taille=n;
p= new int[ne];
ne=0;
}
void empiler(int n)
{
if(ne<taille)
{p[ne++]=n;}
else
{cout<<"tableau vide";
}}
void depiler()
{if(ne>0)
{ cout<<" la valeur a depiler est:"<<p[--ne]<<endl;}
else
{cout<<"pile vide";}
}
void affiche()
{ for(int i=0;i<ne; i++)
cout<<p[i]<<endl;
}
};
main ()
{ pile_entier P1(6);
P1.empiler(4);
P1.empiler(8);
P1.empiler(19);
P1.affiche();
P1.depiler();
P1.affiche();
system("pause");
}
en tt cas pour les fct depiler et emplier , c été pas demander ds le projet mais voila le code
#include<iostream.h>
class pile_entier
{ int taille;
int ne;
int *p;
public:
pile_entier (int n=7)
{
taille=n;
p= new int[ne];
ne=0;
}
void empiler(int n)
{
if(ne<taille)
{p[ne++]=n;}
else
{cout<<"tableau vide";
}}
void depiler()
{if(ne>0)
{ cout<<" la valeur a depiler est:"<<p[--ne]<<endl;}
else
{cout<<"pile vide";}
}
void affiche()
{ for(int i=0;i<ne; i++)
cout<<p[i]<<endl;
}
};
main ()
{ pile_entier P1(6);
P1.empiler(4);
P1.empiler(8);
P1.empiler(19);
P1.affiche();
P1.depiler();
P1.affiche();
system("pause");
}
C'est pas très dynamique, mais c'est correct (à première vu). En général, on attend d'une pile qu'elle gère la mémoire elle même, c'est à dire que l'on puisse empiler les objets sans se soucier de la limite. 'est à dire qu'il faut augmenter la taille du tableau lors de l'empilage si celui ci est trop petit.
Par contre, comme tu fait un new dans le constructeur, il est plus propre de créer un destructeur qui rend la mémoire, sinon gare aux fuites.
Par contre, tu n'as pas compris l'utilisation de la balise de code... (4 ème bouton d'édition, juste après souligné)
Par contre, comme tu fait un new dans le constructeur, il est plus propre de créer un destructeur qui rend la mémoire, sinon gare aux fuites.
Par contre, tu n'as pas compris l'utilisation de la balise de code... (4 ème bouton d'édition, juste après souligné)