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 :

Générer des valeurs et des caractères


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Juillet 2006
    Messages
    294
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 294
    Par défaut Générer des valeurs et des caractères
    Bonjour,

    Mon probleme est:

    on doit avoir une liste d'entier et pour chaque un entier je peux avoir une liste de caractere
    exemple
    32 --> a,v,i
    12 --> b

    (des listes chainee imbrique)

    J'ai une fonction qui remplit une liste chainee et retourne la tete de cette liste d'entiers voici mon code :
    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
    code:
     
    #include <stdio.h>
    #include <stdlib.h>
     
    struct listpetit
    {
    	char x;
    	listpetit *next;
    };
     
     
    struct list 
    {
      int num;
      listpetit *debut; 
      list  *next;
    };
     
    list* remplir()
    { 
    	char a,b;
     
    	list *p,*tete;
    	listpetit *q, *tetep;
     
    //alouer liste des entiers
    	tete=(list *)malloc(sizeof(list));
    	p=tete;
     
    	do {
    	printf ("Donner un entier ");
    	scanf("%d",&p->num);
    //alouer liste des caractere
    	p->debut=(listpetit *)malloc(sizeof(listpetit));
     
    	tetep=p->debut;
    	q=p->debut;
    	do
    	{
    		printf ("Donner un caractere ");
    		scanf(" %c",&q->x);
     
    		printf("Voulez vous saisir un autre char taper y ou n \n");
    	    scanf(" %c",&b);
     
    		if (b == 'n')
    				q->next=NULL;
    		else if (b=='y')
    		{
    				q->next=(listpetit *)malloc(sizeof(listpetit));
    				q=q->next;
    		}
     
    	}while(b != 'n');
     
     
     
     
    	printf("Voulez vous saisir un autre entier taper y ou n \n");
    	scanf(" %c",&a);
    	if (a == 'n')
    				p->next=NULL;
    	else if (a=='y')
    	{
    				p->next=(list *)malloc(sizeof(list));
    				p=p->next;
    	}
    	}while(a != 'n');
     
     return (tete);
     
    }
     
    void main()
    {
    	char a;
    	list *Q;	listpetit *h;
     
     
    Q=remplir();
     
    	printf("\naffichage  \n");
    	while(Q !=NULL)
    	{
    		printf("\n %d \n",Q->num);
    		if(Q->debut != NULL)
    		{	
    			printf(" %c\n",Q->debut->x);
    			Q->debut=Q->debut->next;
    		}
    		Q= Q->next;
    	}
     
    }
    1°) si j'execute avec cet exemple il m'affiche seulement : 32 a et 12 b!!
    2°) Je veux la rendre en une procedure car je veux recuperer les deux tetes de la liste (tete de la lise des entiers et celles de caractere??


    Comment je peux faire???

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2008
    Messages : 145
    Par défaut
    Citation Envoyé par ALIAS200 Voir le message
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    code:
    		if(Q->debut != NULL)
    		{	
    			printf(" %c\n",Q->debut->x);
    			Q->debut=Q->debut->next;
    		}
    1°) si j'execute avec cet exemple il m'affiche seulement : 32 a et 12 b!!
    Je pense qu'il faut remplacer le if par un while

    2°) Je veux la rendre en une procedure car je veux recuperer les deux tetes de la liste (tete de la lise des entiers et celles de caractere??
    Comment ça ?

  3. #3
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par défaut
    Les types listpetit et list ne sont pas définis. Tu dois utiliser struct listepetit et struct list.

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  4. #4
    Membre éclairé
    Inscrit en
    Juillet 2006
    Messages
    294
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 294
    Par défaut
    Bonjour

    j'ai remplace le if par while mais lors de l'affichage il n'affiche rien car le
    Q->debut a atteint le null donc il ne va entrer dans cette boucle donc je dois recuperer la tete de la petite liste des caractere

    Comment je peux le faire

  5. #5
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Octobre 2004
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Octobre 2004
    Messages : 77
    Par défaut
    chez moi ça fonctionne...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     printf("\naffichage  \n");
    	while(Q !=NULL)
    	{
    		printf("\n %d \n",Q->num);
    		while(Q->debut != NULL)
    		{	
    			printf(" %c\n",Q->debut->x);
    			Q->debut=Q->debut->next;
    		}
    		Q= Q->next;
    	}

Discussions similaires

  1. Réponses: 7
    Dernier message: 18/05/2011, 12h09
  2. Réponses: 18
    Dernier message: 28/04/2006, 11h00
  3. Valeur pour des checkbox et des boutons radio pour MySQL
    Par mounirha dans le forum Administration
    Réponses: 1
    Dernier message: 18/04/2006, 23h54
  4. Requête qui exclue des enregistrements suivants des valeurs
    Par paflolo dans le forum Langage SQL
    Réponses: 4
    Dernier message: 15/02/2006, 17h38
  5. Récupérer des valeurs dans des fichiers html
    Par nico93100 dans le forum Langage
    Réponses: 1
    Dernier message: 05/01/2006, 21h46

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