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

C++ Discussion :

Un programme simple qui ne s'éxecute pas


Sujet :

C++

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2013
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Un programme simple qui ne s'éxecute pas
    Bonjours à tous.
    Je suis débutant en C++. J'ai conçu un programme qui crée une liste chainée, puis, en tapant une valeur, il vérifie si elle existe dans cette liste. Le programme s'exécute mais la deuxième fonction semble ne pas fonctionner correctement. Merci.
    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
    #include <iostream>
    using namespace std;
    class liste
    {
    public:
        int n;
        liste *next;
    };
    liste *L,*tete;
    char rep;
    void creation(liste *tete)
    {
        do
        {
            liste *L=new liste;
            cout<<"Entrez un nombre\n";
            cin>>L->n;
            L->next=tete;
            tete=L;
            cout<<"Autre element?O/N\n";
            cin>>rep;
        }
        while (rep=='o' || rep=='O');
    }
    void appartient(liste *tete)
    {
        int a;
        cout<<"Donnez un nombre à rechercher\n";
        cin>>a;
        while (L!=NULL)
        {
            if (L->n==a) cout<<"appartient" ;
            else cout<<"n'appartient pas";
            L=L->next;
        };
    } 
    int main()
    {
        creation(tete);
        appartient(L);
        return 0;
    }

  2. #2
    Membre éclairé
    Inscrit en
    Décembre 2010
    Messages
    290
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 290
    Points : 719
    Points
    719
    Par défaut
    Dans ta fonction "appartient", tu as cette boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
       while (L!=NULL)
        {
            if (L->n==a) cout<<"appartient" ;
            else cout<<"n'appartient pas";
            L=L->next;
        };
    mais la variable L contient encore sa dernière affectation, qui date de l'ajout du dernier élément.

    Je pourrais poster un code correct, mais en fait ton souçi vient du fait que tu utilises 3 globales :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    liste *L,*tete;
    char rep;
    qui ne servent à rien (dans le sens où elles n'ont aucun intérêt d'être globales).
    Si tu adaptes ton programme pour que ces variables deviennent des automatiques dans tes fonctions, tu obtiendras un code correct (ou un message d'erreur du compilateur).

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2013
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci pour votre aide. C'était utile, après la modifications des trois variables globales en variables locales, la procédure appartient() fonctionne mais en tapant plusieurs nombres, elle evalue chaque nombre et retourne si il appartient ou non ( elle affiche par exemple "appartient n'appartient pas ...etc) ce qui est génant. j'ai voulu utiliser break mais ça marche pas.
    Voici le nouveau code de la procédure appartient()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    void appartient(liste *tete)
    {
        int a;
        liste *L;
        cout<<"Donnez un nombre à rechercher\n";
        cin>>a;
        while (L!=NULL)
        {
            if (L->n==a) cout<<"appartient" ;
            else cout<<"n'appartient pas";
            L=L->next;
        };
    }

  4. #4
    Membre éclairé
    Inscrit en
    Décembre 2010
    Messages
    290
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 290
    Points : 719
    Points
    719
    Par défaut
    Dans ta fonction appartient() tu n'initialises pas le pointeur L, il contient donc n'importe quoi. Generalement cela provoque un plantage, mais ca peut aussi ne rien faire du tout. En tout cas cela ne marche jamais.

    Ce qu'il faut que tu fasses, c'est faire pointer L sur la tete de la liste. Ton code devient donc :

Discussions similaires

  1. [Python 3.X] Programme simple qui s'emballe de façon inexpliqué
    Par trapp dans le forum Général Python
    Réponses: 5
    Dernier message: 05/07/2015, 15h46
  2. [MySQL] Commande Php très simple qui ne s'affiche pas
    Par sabrimi dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 14/08/2013, 09h58
  3. Probleme simple qui ne fonctionne pourtant pas
    Par classe Victoire3 dans le forum C++
    Réponses: 2
    Dernier message: 12/05/2011, 21h00
  4. Réponses: 12
    Dernier message: 30/05/2009, 21h28
  5. Application simple qui pourtant ne marche pas
    Par ThanosT dans le forum C
    Réponses: 8
    Dernier message: 30/09/2005, 21h02

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