Pile c++
Résolu
javast
Messages postés
75
Date d'inscription
Statut
Membre
Dernière intervention
-
javast Messages postés 75 Date d'inscription Statut Membre Dernière intervention -
javast Messages postés 75 Date d'inscription Statut Membre Dernière intervention -
Bonjour je débute avec c++, je dois réaliser un une pile en c++, j'ai déjà fais ça en java mais en c++ j'arrive pas je le bloque dès le debut
class Pile
{
public:
Pile(int n);// pile vide de n element
Pile(const Pile& s);//pile identique à s
Pile operator +(const Pile& s);
int push(int e);
int rechercher(int e);
private :
int* conteneur;
int size;
int currentElt;
};
voilà ce que j'ai dans un premier temps
Pile::Pile(int n)
{
size=n;
currentElt=0;
conteneur=new int(n);
}
sinon je bloque sur les autres méthodes, si quelqu'un peut m'aider :(
class Pile
{
public:
Pile(int n);// pile vide de n element
Pile(const Pile& s);//pile identique à s
Pile operator +(const Pile& s);
int push(int e);
int rechercher(int e);
private :
int* conteneur;
int size;
int currentElt;
};
voilà ce que j'ai dans un premier temps
Pile::Pile(int n)
{
size=n;
currentElt=0;
conteneur=new int(n);
}
sinon je bloque sur les autres méthodes, si quelqu'un peut m'aider :(
A voir également:
- Pile brulante
- Pile carte mere - Guide
- Pile bios empêche démarrage pc ✓ - Forum Matériel & Système
- Pile manette wii - Forum Wii
- Piles pour wiimote ✓ - Forum Wii
- Démarrer PC sans pile ✓ - Forum Matériel & Système
2 réponses
Salut
Le problème du C++ c'est la gestion de la mémoire. Soit tu fais des listes chainées, ça évite de gérer la mémoire, mais ça prend de la place mémoire, pour un type intégrale, mais s'avère utile pour des objets volumineux.
Le parti prit de faire un tableau est bien mais nécessite de gérer la mémoire. En général ce qui est fait c'est de dimensionner trop grand, car si tu doit redimensionner ton tableau à chaque nouvel élément, tu perds du temps en copie (et oui, ce n'est pas possible d'étendre un tableau).
Mais sinon tu es bien parti. Je te conseil donc d'avoir 2 variables : une variable size qui est la taille réelle du tableau et une variable lenght qui est le nombre de données dans la pile. Ensuite, à chaque fois qui tu ajoutes un élément tu vérifies les deux tailles, et si tu manques de place tu fait un tableau plus grand et tu copies tes donner dedans avant de détruire le premier.
Le problème du C++ c'est la gestion de la mémoire. Soit tu fais des listes chainées, ça évite de gérer la mémoire, mais ça prend de la place mémoire, pour un type intégrale, mais s'avère utile pour des objets volumineux.
Le parti prit de faire un tableau est bien mais nécessite de gérer la mémoire. En général ce qui est fait c'est de dimensionner trop grand, car si tu doit redimensionner ton tableau à chaque nouvel élément, tu perds du temps en copie (et oui, ce n'est pas possible d'étendre un tableau).
Mais sinon tu es bien parti. Je te conseil donc d'avoir 2 variables : une variable size qui est la taille réelle du tableau et une variable lenght qui est le nombre de données dans la pile. Ensuite, à chaque fois qui tu ajoutes un élément tu vérifies les deux tailles, et si tu manques de place tu fait un tableau plus grand et tu copies tes donner dedans avant de détruire le premier.
essai "Pile s2(s1);"
C'est erreur est vraiment étrange. Je ne l'ai jamais vu. Ça ressemble à une erreur système, mais tes variables ont vraiment trop petites pour générer de telles erreurs.
Es tu sur que s.size>0 ? affiche pour vérifier. Ça semble crétin comme remarque, mais à part ça, je ne vois pas ce qui pourrait générer une erreur dans malloc. À tout hasard, met ta fonction push.
C'est erreur est vraiment étrange. Je ne l'ai jamais vu. Ça ressemble à une erreur système, mais tes variables ont vraiment trop petites pour générer de telles erreurs.
Es tu sur que s.size>0 ? affiche pour vérifier. Ça semble crétin comme remarque, mais à part ça, je ne vois pas ce qui pourrait générer une erreur dans malloc. À tout hasard, met ta fonction push.
j'ai déjà essayer Pile s2(s1) au début, sans aucun chagement
voilà exactement ce je fais dans mon main
#include "Pile.cpp"
using namespace std;
int main()
{
Pile s1(4);
s1.push(3);
s1.push(5);
s1.push(7);
s1.push(9);
//Pile s2=s1; // là j'ai une erreur
for(int i=0;i<s1.size; i++)
{
cout << s1.conteneur[i] <<endl; //affiche le contenu de la pile
}
return 1;
}
fonction push
int Pile::push(int e)
{
int a=0;
if(currentElt<size)
{
conteneur[current]=e;
a=currentElt;
currentElt++;
}
else{
cout << "la Pile est pleine le " << e << " n est pas inserer"<< endl;
a= -1;
}
return a;
}
Constructeur
Pile::Pile(int n)
{
currentElt=0;
size=n;
conteneur=new int[0];
}
voilà exactement ce je fais dans mon main
#include "Pile.cpp"
using namespace std;
int main()
{
Pile s1(4);
s1.push(3);
s1.push(5);
s1.push(7);
s1.push(9);
//Pile s2=s1; // là j'ai une erreur
for(int i=0;i<s1.size; i++)
{
cout << s1.conteneur[i] <<endl; //affiche le contenu de la pile
}
return 1;
}
fonction push
int Pile::push(int e)
{
int a=0;
if(currentElt<size)
{
conteneur[current]=e;
a=currentElt;
currentElt++;
}
else{
cout << "la Pile est pleine le " << e << " n est pas inserer"<< endl;
a= -1;
}
return a;
}
Constructeur
Pile::Pile(int n)
{
currentElt=0;
size=n;
conteneur=new int[0];
}
non au fait c'est que j'avais des erreurs dans le constructeur, maintenant c'est bon, enlève les []
Pile::Pile(int n)
{
currentElt=-1;
size=n;
conteneur=new int(0);
}
int Pile::push(int e)
{
int a=0;
if(currentElt>=size-1)
{
cout << " Pile pleine"<< endl;
}
else{
currentElt++;
conteneur[current]=e;
a=currentElt;
}
return a;
}
Pile::Pile(int n)
{
currentElt=-1;
size=n;
conteneur=new int(0);
}
int Pile::push(int e)
{
int a=0;
if(currentElt>=size-1)
{
cout << " Pile pleine"<< endl;
}
else{
currentElt++;
conteneur[current]=e;
a=currentElt;
}
return a;
}
Pile::Pile(int n)
{
size=n;
currentElt=0;
conteneur=new int(n);
}
Pile::Pile(const Pile& n)
{
//aucune idée :(
}
Pile::Pile(const Pile& n)
{
size=n.size;
currentElt=n.currentElt;
for(int i=0;i<n.currentElt;i++)
{
conteneur[i]=n.conteneur[i];
}
}
ca compile, j'ai pas encore fais un main, si tu peux m'aider pour faire push
cette dernière doit empiler e et renvoyer son index
Merci