Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3530 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [C] - Je comprends plus tout :/

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C] - Je comprends plus tout :/

n°159033
SquiiiD
be cool !
Posté le 13-06-2002 à 22:40:12  profilanswer
 

Bonjour, jai manqué 2 cours de C car j'etais malade ( sisi c vrai :) ) Le prog c que je suis un peu largué, voici l'ennoncé suivante, + la reponse, mais il y a qques truc que je ne parviens pas a comprendre... est ce que qqun pourrais m'eclairer??? j'ai ajouter un commentaire a coté des lignes qui m'echapent . Merci d'avance pour vos reponse ....  
 
 

Code :
  1. /*ecrire un programme qui lit une série de nombres(le dernier étant 0),
  2. les relie logiquement en mémoire et affiche cette liste.*/
  3. #include <stdio.h>
  4. #include <conio.h>
  5. #include <malloc.h>
  6. #include <stdlib.h>
  7. void main()
  8. {
  9. int nbr;
  10. struct s{int nb;struct s *suiv;}*deb,*crt; // pourquoi declarer 2 pointeur?
  11. deb=(struct s*)malloc(sizeof(struct s)); //je capte pas tout a cette ligne non plus
  12.   crt=deb;
  13. printf("\nEntrer un nombre (0 pour terminer):" );
  14. scanf("%d",&nbr);
  15. crt->nb=nbr; //que fait exactement ceci?
  16.   crt=deb;
  17. while(nbr!=0)
  18. {
  19.    crt->suiv=(struct s*)malloc(sizeof(struct s)); // ?????????
  20.    crt=crt->suiv;
  21.    crt->nb=nbr ;
  22.    printf("\nEntrer un nombre (0 pour terminer): " );
  23. scanf("%d",&nbr);
  24. }
  25.    crt->suiv=NULL;
  26. crt=deb;
  27. int i=0 ;
  28. while(crt!=NULL)
  29. {
  30.    if(i==4)
  31.     {
  32.       //free(crt);
  33.     crt=crt->suiv;
  34.       i++;
  35.       }
  36.    crt=crt->suiv;
  37.    printf("\nLe nombre est n° %d : %d",++i ,crt->nb);
  38.  
  39.    }
  40. getch();
  41. }

mood
Publicité
Posté le 13-06-2002 à 22:40:12  profilanswer
 

n°159045
Majca Jala​su
Posté le 13-06-2002 à 23:00:50  profilanswer
 

pourquoi declarer 2 pointeur?
deb est utilisé comme sauvegarde du point de la tête de liste.
crt est utilisé pour modifier la liste et se balader dedans.
 
deb=(struct s*)malloc(sizeof(struct s)); alloue à deb une place mémoire permetant d'une taille égale à la taille d'un struct s.
=> deb est un struct* => malloc doit allouer de la mémoire "de type" struc* (deb=(struct s*)malloc(sizeof(struct s));)
deb=(struct s*)malloc(sizeof(struct s));  =>  sizeof renvoie la taille d'un élément en l'occurence ici d'un struct.
 
Le premier while permet à l'utilisateur de créer une liste d'entiers.
crt->nb=nbr intialise à nbr le champ nb de l'élément pointé par crt.
crt->suiv=(struct s*)malloc(sizeof(struct s)); alloue un nouvel espace mémoire au pointeur suiv de crt (cf plus haut, c'est pareil).
Ensuite, deb est utilisé pour ramener crt en début de liste.

n°159050
SquiiiD
be cool !
Posté le 13-06-2002 à 23:09:42  profilanswer
 

raah, merci pour ces explication tres claires :)
 
je v voir si j'arrive a m'en sortir avec ca merci beaucoup d'avoir pris le temps de tout detailler !!!  
a+

n°159771
kjus
Posté le 15-06-2002 à 10:50:47  profilanswer
 

le coup du crt->nb c équivalent a (*crt).nb

n°159775
kjus
Posté le 15-06-2002 à 11:03:18  profilanswer
 

c'est des listes chainées ton truc en fait..


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [C] - Je comprends plus tout :/

 

Sujets relatifs
[VB6]Une erreur que je comprends pas la ![PHP / MySQL] erreur, je comprends pas :(
Pb avec un répertoire /icons sur serveur free, comprends vraiment pas[PHP] Requête MySQL ds une fonction, ça marche po :( je comprends po !
Je débute en C et y'a un p'tit truc que je comprends pas.......[UNIX] Script csh, comprends pas...
[VC++6] comprends pas tout ...Fonction php : comprends pas le bug
[C++ Builder 5] Comprends plus rien !!![D3D8] Je ne comprends pas a quoi sert IDirect3DDevice8::Present
Plus de sujets relatifs à : [C] - Je comprends plus tout :/


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)