IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage C++ Discussion :

Erreur dans une classe de file


Sujet :

Langage C++

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2010
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2010
    Messages : 67
    Points : 61
    Points
    61
    Par défaut Erreur dans une classe de file
    LE sujet c'est les files d'attente

    Je dois cree un programme qui entre des elements avec leur numero dans une file d'attente ( fonctionelle)
    les afficher jusqua tant que le numero de chaque element attein zero ( j'elimine l'element)
    ex admetton je entre
    p1 2
    p2 6
    p3 5
    lla sortie doit etre

    p1-eliminer
    p2 4
    p2 2
    p2 (eliminer )
    p3 3
    p3 1
    p3 (eliminer)

    voici mes class et mon main

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    class File.h 
     
    #ifndef FileH
     #define FileH
     #include "Processus.h"
     
     const int tailleFileMax = 5;
     class File  {
       public:
        File();
        bool enFile(const Processus &nouvelElement);
        bool deFile(Processus &elementEnleve);
        void afficher (); 
      private:
       Processus element[tailleFileMax];
     
       int premier,dernier;
       Processus* top; 
     };
    #endif
     
    File.CPP
     
    #include <iostream>
    #include "File.h"
     
    #include <cstring>
    #include <iostream>
    #include <exception>
    using namespace std;
    File::File() {
        premier=0;dernier=-1;
    }
    bool File::enFile(const Processus &nouvelElement) {
     if (dernier < tailleFileMax-1) {
        //std::cout <<"Queue de la file avant l'ajout d'un element: "<<dernier <<std::endl;
       element[++dernier]=nouvelElement;
       //std::cout <<"Queue de la file apres l'ajout d'un element: "<<dernier <<std::endl;
       //std::cout <<"Valeur ajoutee est : "<<element[dernier]<<std::endl;
       return true;
     } 
     else
       return false;
    }
    bool File::deFile(Processus &elementEnleve) {
     if(dernier>=0) {
       elementEnleve=element[premier];
             for (int i= 1; i<=dernier;i++) 
             element[i-1]= element[i]; 
             // on déplace tous les élément vers le  début 
             dernier--;	// on décrément le pointeur vers le dernier élément de la file 
       return true;
     } 
     else
       return false;
     }
     
     void File::afficher () 
     { 
          Processus *temp = element;
          int j=0;
        while (temp != top && temp != NULL   ) 
        {        
        {     for (int i =0 ; i< 5 ; i++) 
               {    
                    j=j+2;
                     if (temp -> numero >0)
                       std::cout<<temp -> numero-(j) <<" " << temp->nom  <<" " <<   temp -> suivant<<endl ; 
                    else  
                    if (temp -> numero <=0 )
                     std::cout<<temp -> numero <<" " << temp->nom  <<" eliminer "<<endl;  
               }
     
               }
              temp++;     
     
        }   delete temp; 
      }
     
    le main () 
    int main(int argc, char *argv[])
    {  int temp ; 
        File p; 
        Processus Pr; 
         string nom ;
       File *p1 = new File ;
     
        //élément de la file
     
     
        cout << "Mettre dans la file les 5 elements saisis  : " << endl;
        for (int j=0;j<3;j++) {
           cout << "Entrez un element " << j+1 <<" de la file : " ;
           cin >> nom ;
           cout << "Entrez un numero  " << j+1 <<" de la file : " ;
           cin>>temp; 
     
            p.enFile(Processus( nom .c_str(),temp));
     
     
        }                 p.afficher();
    c'est la fonction afficher () et la fonction deFiler qui fonctionne pas LOL AIDER MOIII

  2. #2
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Salut,
    afficher devrait être constante
    top n'est jamais initialisée
    A quoi sert le delete à part à introduire un bug ?
    Quel est l'algo de ta fonction afficher car c'est pas clair du tout (une simple boucle for de 0 à dernier aurait suffi, non ?).
    Incohérence de gestion entre premier et dernier.

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2010
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2010
    Messages : 67
    Points : 61
    Points
    61
    Par défaut merci pour votre reponse
    le delete sert a rien je l'ai ajouter par esperence d'eviter le bugg
    l'argorythme est

    Tant que la file est pas vide

    si numero > zero

    ecrire:" nom : numero-2 ";

    autre

    ecrire :" nom : eliminer " ;
    defiler ( nom, numero)


    c'est ca que j'essaye de faire en gros

  4. #4
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Salut,
    Et bien, mets en œuvre ton algorithme : écris une fonction EstFileVide(), une fonction AfficheElement(Processus const&), vire tes pointeurs qui ne servent à rien et utilises ta fonction deFile.

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2010
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2010
    Messages : 67
    Points : 61
    Points
    61
    Par défaut
    SALUT
    J'arrive pas a faire ca d'une bonne facon tjr des BUGGSSS

  6. #6
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Montres nous ce que tu as réussi à faire

  7. #7
    Expert confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Points : 4 551
    Points
    4 551
    Par défaut
    Citation Envoyé par napi15 Voir le message
    SALUT
    J'arrive pas a faire ca d'une bonne facon tjr des BUGGSSS
    Pas pleurer, pas pleurer

    Si tu as des problèmes, procède comme suit :

    1) écrit les algorithmes sous la forme de pseudo-code

    Cette forme particulière permet d'analyser l'algorithme. Par exemple, pour une fonction qui soustrait 1 à tous les éléments d'une liste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    p = premier élément de l'ensemble
    tant-que p n'est pas nul
      valeur de p = valeur de p - 1
      p = élément qui suit p
    fin-tant-que
    2) vérifie ton algorithme avec des ensembles de données fictif. Par exemple, que se passe-t-il lors que j'applique l'algorithme ci-dessus à l'ensemble S = {3, 1, 2, 5, 4, 2, 1} ? Que se passe-t-il si je lui passe S = { } (l'ensemble vide). Et S = { 2 } (un seule élément) ? etc.

    3) transpose ton pseudo-code en code réel : cette phase devrait être simple, puisqu'il ne s'agit alors plus que d'un problème de syntaxe et de choix d'implémentation - comment est représenté l'ensemble, ... Ces choix d'implémentation peuvent te forcer à écrire de nouveaux algorithmes, auquel cas tu répète l'opération jusqu'à ce que tu ais l'intégralité de ton code, testable, sous la main.

    Si tu as des problèmes, n'hésite pas à venir nous trouver avec du pseudo-code, du code, etc.

Discussions similaires

  1. Gestion d'erreurs dans une classe
    Par a028762 dans le forum Langage
    Réponses: 4
    Dernier message: 10/12/2011, 11h50
  2. Erreur dans une classe !
    Par perdos dans le forum C#
    Réponses: 6
    Dernier message: 16/08/2007, 13h03
  3. Gestion des erreurs dans une classe
    Par gregb34 dans le forum ASP.NET
    Réponses: 10
    Dernier message: 26/07/2007, 09h59
  4. Réponses: 7
    Dernier message: 29/04/2007, 10h37
  5. [Thread] Erreur dans une classe interne
    Par totof2308 dans le forum Général Java
    Réponses: 5
    Dernier message: 03/06/2004, 08h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo