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 :

Passer les entiers d'une pile a une autre


Sujet :

C

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Passer les entiers d'une pile a une autre
    Bonjour
    Pour l'instant, je me suis attelé à la première question, à savoir:
    on se donne trois piles p1, p2 et p3 . la pile p1 contients une suite de nombres entiers positifs.
    ecrire un algorithme pour déplacer les entiers de p1 dans p2 de façon à avoir dans p2 tous les nombres pairs au dessous des nombres impairs.
    Voici ce que j'ai déjà:
    -Un fichier "pile.c" qui contient les fonctions dont j'ai besoin.
    [/quote]
    Et nous, on en a pas besoin ?
    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
     
     
    -------------- Build: Debug in hello ---------------
     
    Compiling: main.c
    Linking console executable: bin\Debug\hello.exe
    obj\Debug\main.o: In function `pairs_impairs':
    C:/dev/hello/main.c:8: undefined reference to `_cree_pile'
    C:/dev/hello/main.c:9: undefined reference to `_cree_pile'
    C:/dev/hello/main.c:13: undefined reference to `_depile'
    C:/dev/hello/main.c:14: undefined reference to `_depile'
    C:/dev/hello/main.c:14: undefined reference to `_empile'
    C:/dev/hello/main.c:16: undefined reference to `_depile'
    C:/dev/hello/main.c:16: undefined reference to `_empile'
    C:/dev/hello/main.c:16: undefined reference to `_pilevide'
    C:/dev/hello/main.c:20: undefined reference to `_depile'
    C:/dev/hello/main.c:20: undefined reference to `_empile'
    C:/dev/hello/main.c:20: undefined reference to `_pilevide'
    obj\Debug\main.o: In function `main':
    C:/dev/hello/main.c:25: undefined reference to `_cree_pile'
    C:/dev/hello/main.c:26: undefined reference to `_cree_pile'
    C:/dev/hello/main.c:27: undefined reference to `_cree_pile'
    C:/dev/hello/main.c:32: undefined reference to `_empile'
    C:/dev/hello/main.c:39: undefined reference to `_depile'
    C:/dev/hello/main.c:39: undefined reference to `_pilevide'
    C:/dev/hello/main.c:41: undefined reference to `_libere_pile'
    C:/dev/hello/main.c:42: undefined reference to `_libere_pile'
    C:/dev/hello/main.c:43: undefined reference to `_libere_pile'
    collect2: ld returned 1 exit status
    Process terminated with status 1 (0 minutes, 0 seconds)
    20 errors, 0 warnings

  2. #2
    Membre averti

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 242
    Points : 354
    Points
    354
    Par défaut
    Dans ta fonction pairs_impairs, tu initialises deux piles
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    pile P2=cree_pile();
    pile Pint=cree_pile();
    Mais le truc, c'est que nulle part ta fonction ne retourne l'une (ou l'autre, mais je pense que c'est bien P2 que tu veux), ne retourne quelque chose!
    Dans ton main tu as bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    pile P2=cree_pile();
    mais il ne s'agit pas de la meme pile qu'auparavant. Elle a bien le meme nom, mais c'est pas pour ca que c'est la même (histoire de portées de variables).

    Essaie plutot ceci
    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
     
    #include <stdio.h>
    #include <stdlib.h>
     
    #include "pile.h"
     
     
    pile *
    pairs_impairs( pile P1 )
    {
      pile P2=cree_pile();
      pile Pint=cree_pile();
     
      while (!pilevide(P1))
        {
          if ( depile(P1)%2==0 )
    	empile( P2 , depile(P1) );
          else
    	empile( Pint , depile(P1) );
        }
     
      while (!pilevide(Pint))
        empile( P2 , depile(Pint) );
      libererPile(Pint);
      return P2;
    }
     
    int
    main (int argc, char *argv[])
    {
      pile P1=cree_pile();
      pile P2; 
      for (int i=1 ; i<argc ; i++)
        empile( P1 , atoi(argv[i]) );
     
      P2=pairs_impairs(P1);
     
      while (!pilevide(P2))
        printf("%d\n",depile(P2));
     
      libere_pile(P1); 
      libere_pile(P2); 
      return 0;
    }
    Moyennant peut être le 'pile *' comme valeur de retour en 'pile', selon tes spécifications. Mais comprend bien que les variables que les variables que tu
    déclares à l'intérieur d'un bloc, ne sont visibles (et utilisables) que dans ce meme bloc (et eventuellement dans d'autres sous blocs de ce bloc), mais PAS
    dans une fonction appelée, qui aura ses propres variables LOCALES.
    Je sais pas si c'est très clair ce que je dis...
    Pour mieux comprendre, cherche un cours sur la portée des variables...

  3. #3
    Membre éprouvé Avatar de orfix
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 707
    Points : 1 132
    Points
    1 132
    Par défaut
    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
     
    pile pairs_impairs( pile P1 )
    {
    	pile P2=cree_pile();
    	pile Pint=cree_pile();
     
    	while (!pilevide(P1))
    	{
    		/* - tu doit garder la valeur depilée pour 
    		 * l'empiler soit dans P2 ou Pint
    		 * - Nombres paires au dessous des nombres
    		 * impaires !
    		 */
    		int save = depile(P1);
    		if ( (save%2) )
    			/* Nombres Paires */
    			empile( P2 , save);
    		else
    			/* Nombres Impaires */
    			empile( Pint , save );
    	}
     
    	while (!pilevide(Pint))
    		empile( P2 , depile(Pint) );
     
    	/* il te faut récuperer ta pile nouvelement créer
    	 * lors de l'appel tu assigneras le pointeur retourné
    	 * à une variable de type pile
    	 */
    	return P2;
    }
    To start press any key. (reading screen) Where's the "any" key? I see Esc, Catarl, and Pig Up. There doesn't seem to be any "any" key. Wo! All this computer hacking is making me thirsty. I think I'll order a Tab. (presses TAB key). -- HOMER --

Discussions similaires

  1. [Toutes versions] coller les données d'une plage d'une cellule dans une cellule d'une autre feuille[VBA]
    Par arthson dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/01/2012, 17h37
  2. [XL-2002] Macro de comparaison d'une cellule d'une feuille avec une cellule d'une autre feuille.
    Par steelydan dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/09/2010, 12h59
  3. Réponses: 4
    Dernier message: 15/10/2009, 13h33
  4. [XL-2007] Afficher une checkbox dans une feuille si une checkbox d'une autre feuille est cochée
    Par JessieCoutas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/08/2009, 13h35
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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