begin process at 2012 05 29 15:56:10
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Pile et classe template


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Pile et classe template

mardi 10 mai 2005 à 23:34:33 | Pile et classe template

romca

salut a tous. Voila j'ai fais une "pile" en utilisant une classe "pile template" et j'ai quelques erreurs.
1: Quand je rentre des entiers au lieu de caracteres en entree clavier, la fonction
 fail() que j'utilise avec un exception "throw" ne me le detecte pas? 
2: Ensuite il me crée parfois une erreur de debogage du je pense a la non liberation
de l'emplacement mémoire de l'objet pile1 que je cree. Mais je vois pas ou ça cloche?
Merci pour vos explications.
J'ai un corrigé qui marche, mais le deroulement du prog n'est pas du tout le même
donc j'aimerais quand même savoir ou sont mes fautes.
Merci.

#include <iostream.h>
#include<conio.h>
#include<stdlib.h>

/************************************/
template <class T> class PileQuelc //definition de la classe
{
 private: 
  T *debut;
  T *courant;
  int dim;

 public: //accessible de l'exterieur..methode
  PileQuelc(int s); //constructeur
  ~PileQuelc();
  void empiler (T element);  
  T depiler();
  int nbreElements;
  
};

/*************constructeur********************/
template <class T> PileQuelc<T>::PileQuelc(int s)
{
 dim=s;
 debut=new T[dim];
 courant=debut;

}
/**************Destructeur*************************/
template <class T>PileQuelc<T>::~PileQuelc()
{
 delete[] debut;
 courant=NULL;
 cout<<"destruction de l'objet";
}

/****************************************/
template <class T> void PileQuelc<T>::empiler(T element)
{

 if(courant < (debut+dim))
 {

  *courant=element;
  courant++;
  
 }
 else
 throw "\nla pile est pleine\n";
}

/*************************************/
template <class T> T PileQuelc<T>::depiler()
{
 if(courant>debut) courant--;
 else
 throw "\nla pile est vide\n";
 return (*courant);
}


/*********Programme main********************/

int main(int argc, char* argv[])
{

/****Définition taille de la pile et creation****/
 
 int t;
 cout<<"Rentrer la taille de la pile: ";
 cin>>t;
 PileQuelc<int> pile1(t);

/****Empiler les nombres entiers****/
  int i=0;
  char c=0; int sortir=1;
  cout<<"\nChoisissez une option: \n\n";
  cout<<"Option: Empiler un element: Entrez 1\n";
  cout<<"Option: Depiler un element: Entrez 2\n";
  cout<<"Option: Sortie du programme, Entrez 0\n";
  cin>>i;
 do{
 try{

  switch(i)
  {
  case 1:
   cout<<"Rentrer l'element a empiler:(caractere): \n";
   cin>>c;
   if(cin.fail()) throw "echec detecte par fail()";
   pile1.empiler(c);
   break;
  case 2:
   cout<<"l'element va etre depiler: \n";
   pile1.depiler();
   break;
  case 3:
   cout<<"Sortie du programme\n";
   sortir=0;
   pile1.~PileQuelc();
   break;
  }
  }
 
 catch(char *erreur)
  {
   cout<<erreur<<endl;
   pile1.~PileQuelc();
   getch();
   abort();
  }
 
 }while(sortir!=0);

  
  getch();
  return 0;
}
 



Cette discussion est classée dans : int, template, cout, courant, pilequelc


Répondre à ce message

Sujets en rapport avec ce message

Pas compris les arguments [ par Bog ] Bonjour.Voila à chaque fois que je me lance dans un projet de programmation C++, je suis tjrs bloqué par certaines choses, surtout les arguments, et c Pas compris les arguments [ par Bog ] Bonjour.Voila à chaque fois que je me lance dans un projet de programmation C++, je suis tjrs bloqué par certaines choses, surtout les arguments, et c Dans le genre prenant........ [ par Xs ] oui !c 'est trés chiant !j'explique mon pb : j'ai un code source, fais par moi-meme, et dedans, je veux que l'on saisisse des renseignement comme le l implicit declaration of function `int getchar(...)' [ par cognac ] À chaque fois que j'utilise getch(); j'obtien le message suivant:getch();Voici mon programme (en fait mon exercice):#include //bibliotheque d'entree Reference pour arguments de fonction! [ par CoxJoe ] Hello,Voila mon code qui est tres simple :# include # include using namespace std;// fonction pour entrer des lettresvoid getchar(char& name[]){ cout une fiche de renseignement [ par cabarrus ] je cherche à faire un programme qui demande des renseignements pour pouvoir ensuite les affiché comme une fiche d'identité!!!voici monprogramme mais m Pobleme de debutant bas niveau [ par zzzzzz ] #include ?iostream.h? /* pour cout cin */int a;int factorielle(int n) { if(n==0) { return 1; } else { return n*factorielle(n-1); }}void main() tableau de structures type pointeur [ par chocho ] Merci d'avoir répondu à ma demande d'aide.Voici la source sur laquelle je coince:#include#include#define maxlist 10int indicecourant;struct abonne simplifier une fraction ( débutant ) !!! [ par myogtha ] #include int main (){int denominateur,mulfac1,mulfac2,facmul1,facmul2,facmulfinal;int a,b,c,d;coutcin>>a;coutcin>&gt Les nombres aléatoires en C++ (Visual C++ 6.0) [ par Yabo ] Tout d'abord voilà le code :CODE #include #include #include #include using namespace std;void animstartscreen() { int n


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 5,788 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales