Bonjour,
j'essai de faire un exercice pour réaliser une liste chainée avec recherche et modification , je n'arrive pas à réaliser une recherche et une modification
Voici l'enoncé de l'exercice :
voici mon programme :On désire réaliser un programme gérant un petit stock de pièces détachées .chaque pièce est caractérise par un
Identifiant (max20car), une désignation (max30car) expliquant sommairement le type de pièce, son prix et la quantité en stock. Toutes ces données sont enregistrées dans des variables de type structure en liste chaînée. Le programme doit permettre d’introduire une nouvelle pièce, de lister toutes les pièces, de rechercher une pièce, de changer la quantité et de changer le prix d’une pièce et cela à l’aide d’un menu.
Exemple :
1 introduire une nouvelle piece
2 lister toutes les pieces
3 rechercher une piece
4 changer la quantité d’une piece
5 changer le prix d’une piece
6 quitter
Pour la recherche et le changement, le critère de recherche sera l’identifiant. la comparaison de chaîne de caractère (vecteur) directe (via==) n’est pas applicable et il faut faire appel à la fonction strcmp(chaine1,chaine2) qui retourne 0 si les deux chaînes sont identique.
Exemple
if(strcmp(p1->ident,p2->ident)==0)
{Les chaines sont identiques}
Créer des fonctions pour la saisie, l’affichage et la recherche
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
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 #include <cstdlib> #include <iostream> using namespace std; struct Composant { char Ident[20]; char Design[30]; float Prix; int Quant; struct Composant *next; }; void NouvoComposant(struct Composant *ptr) { printf("Nouvo Composant\n"); printf("Identifiant : "); scanf("%s",ptr -> Ident); printf("Designation : "); scanf("%s",ptr -> Design); printf("Prix : "); scanf("%f",&(ptr -> Prix)); printf("Quantite : "); scanf("%d",&(ptr -> Quant)); } void Liste(struct Composant *ptr) { struct Composant *actuel; actuel = ptr; do { printf("Reference : %s\n",actuel ->Ident); printf("Denomination : %s\n",actuel -> Design); printf ("Price : %8.2f\n",actuel -> Prix); printf("Quantity : %d\n\n",actuel -> Quant); actuel = actuel -> next ; } while (actuel != NULL); } int main(int argc, char *argv[]) { struct Composant *first = NULL; struct Composant *current = NULL; struct Composant *previous = NULL; int choix; char Temp[10]; // Menu do { printf("Menu \n\n"); printf("1 - Introduire un composant \n"); printf("2 - Lister les composants \n"); printf("3 - Rechercher un composant \n"); printf("4 - Changer la quantite d un composant \n"); printf("5 - Changer le prix d un composant \n"); printf("0 - Quitter \n\n"); scanf("%d",&choix); switch (choix) { case 1 : { if (first == NULL) { first = (struct Composant *) malloc(sizeof(struct Composant)); current = first ; // Introduction NouvoComposant(current); current -> next = NULL ; } else { previous = current ; current = (struct Composant *) malloc(sizeof(struct Composant)); previous -> next = current; current -> next = NULL; // Introduction NouvoComposant(current); }; break; }; case 2 : { Liste( first); break; }; }; } while (choix !=0 ); system("PAUSE"); return EXIT_SUCCESS; }
Partager