je ss vouveau est je veut develloper mes connaissance en C voila 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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
//Bibliothèques à inclure
    #include <stdio.h> //pour printf(),scanf(),gets(),fflush()
    #include <stdlib.h> //utilisé pour malloc() et free()
    #include <conio.h> //utilisé pour clrscr(), textcolor() et getch()
 
 
    //Constantes
    #define TAILLE_PRENOM 30
    #define NB_CONTACT_MAX 30
 
    //Structure
    typedef struct p_maillon maillon;
    struct p_maillon {
    char prenom[TAILLE_PRENOM];
    char tel[15];
    maillon *suivant; //pointeur sur le maillon suivant
    };
 
    //Prototypes des fonctions
    maillon* InsereNom(maillon *precedent); //Insere un nouveau contact à l'agenda
    maillon* InsereTete(void); //Insere le premier contact
    void Affiche(maillon* tete,int cmpt); //Affiche tout votre agenda
     void main(void)
     {
     maillon *liste[NB_CONTACT_MAX]; //Tableau de pointeur sur les différents maillons
     char choix, quitter; //Caractère utilisé dans le menu
     int C_contact=0,i; //C_contact est le compteur de contact cad qu'il indique le nbre de personne enregistre dans la liste
 
 
     do
     {
     do
     {
 
     fflush(stdin); //On vide le tampon du clavier
     printf("\t - AGENDA TELEPHONIQUE -\n\n\n");
     printf(" Que voulez faire :\n\n");
     printf(" 1-Ajouter un nouveau contact à lagenda.\n");
     printf(" 2-Afficher les contacts de lagenda.\n");
     printf(" 3-Quitter l'agenda telephonique.\n");
     printf("\tVotre choix : \n");
     scanf("%c",&choix);
     }
     while(choix!='1' && choix!='2' && choix!='3'); //on ne sort pas de la boucle tant que le choix n'est pas valide
 
     //Selon le choix de l'utilisateur
     switch(choix)
     {
     case '1' : if(C_contact==0) //Si c'est le premier contact a etre inserer
     {
     liste[0]=InsereTete(); //on utilise la fonction InsereTete()
     C_contact++; //on incremente le nb de contact
     }
     else
     {
     liste[C_contact]=InsereNom(liste[C_contact-1]); //On utilise la fonction InsereNom
     C_contact++; //on incrément le nb de contacts
     }
     break;
 
     case '2' : Affiche(liste[0],C_contact); //AFFICHAGE COMPLET DE L'AGENDA
     break;
 
     case '3' : quitter=1; //on met la variable quitter à 1 pour sortir de la grande boucle
     break;
 
     default : quitter=0; //on met la variable quitter à 0 pour eviter de sortir de la boucle
     break;
     }
     } while(quitter!=1);
 
 
     printf("\n\n Au revoir!!!!!!!");
     if(C_contact!=0) //On libère seulement la memoire que lon a alloué
     for(i=0;liste[i]->suivant!=NULL;i++)
     free(liste[i]);
     getch();
 
     }
     // AJOUTE UN NOUVEAU CONTACT DANS L'AGENDA
    maillon* InsereNom(maillon *precedent)
     {
     //Variables locales
     char prenom[TAILLE_PRENOM];
     char tel[15];
     maillon *p; //pointeur sur maillon qui sera renvoyé par la fonction
 
 
     printf("\t - AJOUT DUN CONTACT A LAGENDA-\n\n");
     p=(maillon *)malloc(sizeof(maillon)); //on alloue un espace memoire à p de la taille d'un maillon
     if(p!= NULL) //si p est different de NULL donc si la memoire a pu etre allouée
     {
     fflush(stdin);
     printf("Entrer le nom :\n ");
     gets(p->prenom); //on demande le prenom et on le stock dans le champ prenom du maillon p
     printf("Entrer le numero de telephone :\n ");
     gets(p->tel); //on demande le numero de telephone et on le stock dans le champ tel du maillon p
     p->suivant=NULL; //Le maillon suivant n'existe pas encore donc on met l'addresse NULL dans le champ *suivant du maillon p
     precedent->suivant=p; //On met l'addresse de p dans le champ *suivant du maillon precedent mis en paramètre
     }
     return p; //et on retourne le pointeur sur maillon p
     }
 
 
 
     // CREE LE PREMIER CONTACT DE l'AGENDA
     maillon* InsereTete(void)
     {
     maillon *p; //pointeur sur maillon qui sera renvoyé par la fonction
     char prenom[TAILLE_PRENOM];
     char tel[15];
 
 
     fflush(stdin); //on vide le tampon du clavier au cas ou
     printf("\t - AJOUT DUN CONTACT A LAGENDA-\n\n");
     p=(maillon*)malloc(sizeof(maillon)); //on alloue un espace memoire a p de la taille d'un maillon
     if(p!=NULL)
     {
     printf("Entrer le nom du nouveau contact :\n ");
     gets(p->prenom);
     printf("Son numero de telephone :\n ");
     gets(p->tel);
     p->suivant=NULL;
     }
     return p; //on retourne le pointeur
     }
 
 
 
     // AFFICHE LE CONTENU DE L'AGENDA
    void Affiche(maillon* tete,int cmpt) //*tete correspond à l'adresse du premier maillon et cmpt au nombre de contact dans l'agenda
    {
     maillon* temp; //pointeur temporaire pour naviguer entre les differents maillons
     int i;
 
 
     printf("\t - AFFICHAGE D UN CONTACT -\n\n");
     printf("Voici tous vos contact : \n\n");
     if(cmpt==0) printf("Il n'y a aucun contact de sauvegarder dans l'agenda");
     else
     {
     temp=tete; //le pointeur temp pointe le meme maillon que tete
     while(i!=0)
     {
     if(temp->suivant==NULL) //si le maillon d'apres n'existe pas
     {
     printf("%s\t",temp->prenom); //on affiche quand meme les different champ du maillon
     printf("%s\n",temp->tel);
     i=0; //on affecte 0 à i pour sortir de la boucle
     }
    else
     {
     printf("%s\t",temp->prenom);
     printf("%s\n",temp->tel);
     temp=temp->suivant; //temp prend l'adresse du maillon suivant
     }
     }
     }
     getch(); //pour avoir le temps de voir s'afficher lagenda
     }


question :je veut ajouté des fonction comme clrsc() pour effacer l'ecran ms marche pas avec visuel c++est le mode graphic càd graphics.h