Bonjour,
Je voudrai ecrire une fonction afficheTab qui affiche les eéléments du tableau de type void* mais je n'ai pas reussi. Si vous pouvez m'aider.
Merci.
Bonjour,
Je voudrai ecrire une fonction afficheTab qui affiche les eéléments du tableau de type void* mais je n'ai pas reussi. Si vous pouvez m'aider.
Merci.
Bonjour
Peux tu nous montrer ce que tu as écrit, on va te dire ce qui coince.Je voudrai écrire une fonction afficheTab qui affiche les éléments du tableau de type void* mais je n'ai pas reussi
Ca c'est uniquement la fonction affiche
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 void affichTab(DTAB* dt){ int i; for(i=0;i<dt->n_elements;i++){ affVin(dt->T[i]); } }
C la fonction affiche Vin que g utiliser car j'ai supposé que le tableau contenai des pointeur sur vin.
Vin.c
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 void affVin(const Vin* v) { printf("[%6d] millésime=%d, cru=%s, pays=%s, region=%s, couleur=%s, qualité=%s, quantité=%d\n", v->id, v->millesime, v->cru, v->pays, v->region, v->couleur, v->qualite, v->qte); }
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 // vin.c // --------------------------------------------------------------------------------------- #include <time.h> #include <stdlib.h> #include <string.h> #include <stdio.h> #include "Vin.h" const char _cru[9][32] = { "Gewurtz", "Sylvaner", "Riesling", "Margot", "Brouilly", "Julienas", "Côtes Roties", "Entre deux mers", "St Estephe" }; const char _pays[5][32] = { "France", "Etats Unis", "Italie", "Australie", "Suisse" }; const char _region[6][32] = { "Beaujolais", "Côtes du Rhone", "Alsace", "Medoc", "Provence", "Loire" }; const char _couleur[3][32] = { "Blanc", "Rosé", "Rouge" }; const char _qualite[5][32] = { "Dégueu", "Moyen", "Bon", "Très bon", "Excellent" }; // --------------------------------------------------------------------------------------- Vin* creerVin() { Vin* v; v = (Vin*)malloc(sizeof(Vin)); // generation de l'identifiant int n_cru = rand() % 9, n_pays = rand() % 5, n_region = rand() % 6, n_mil = rand() % 100 + 1909; v->id = n_mil * 100000 + n_cru * 10000 + n_pays * 1000 + n_region * 100 + rand() % 100; strcpy(v->cru, _cru[n_cru]); strcpy(v->pays, _pays[n_pays]); strcpy(v->region, _region[n_region]); v->millesime = n_mil; strcpy(v->couleur, _couleur[rand() % 3]); strcpy(v->qualite, _qualite[rand() % 5]); v->qte = (rand()%100)*1000; return v; } // --------------------------------------------------------------------------------------- void affVin(const Vin* v) { printf("[%6d] millésime=%d, cru=%s, pays=%s, region=%s, couleur=%s, qualité=%s, quantité=%d\n", v->id, v->millesime, v->cru, v->pays, v->region, v->couleur, v->qualite, v->qte); } // --------------------------------------------------------------------------------------- void libereVin(Vin* v) { free(v); } DTAB.c #include "DTAB.h" #include <stdio.h> #include <stdlib.h> #include <string.h> #include "Vin.h" //1 création d'un tableau de n elmnt DTAB* dtab_Cree(int n){ DTAB* tab = (DTAB*)malloc(sizeof(DTAB)) ; tab->taille = n; tab->n_elements=0 ; tab->T=(PGenerique*)malloc(sizeof(PGenerique)*n); } //2 destruction d'un tableau dyn void dtab_Detruit(DTAB* dt){ free(dt->T); free(dt); } //3 ajout d'un elmt e à la fin du tableau int dtab_Ajout(DTAB* dt, void* e){ dt->T[dt->n_elements]=e; return dt->n_elements; } void affichTab(DTAB* dt){ int i; for(i=0;i<dt->n_elements;i++){ affVin(dt->T[i]); }
et ton dt (type DTAB) contient des vins (hypothèse 1) ou des POINTEURS sur des vins (hypothèse 2).
Si c'est l'hypothèse 2, ton code affichTab est correct...
Mais comme je pense que c'est l'hypothèse 1, revoit un peu ton cours.... Ce n'est pas comme ça qu'on accède à un élément d'une structure...
![]()
Mon dt contien des pointeurs sur vin
en fait quand je compile il me dit que la fonction affvin prend comme paramètre une constante.
ben oui c'est comme ça que tu l'as déclaré![]()
C le prof qui nous l'a donne comme ça je ne p pas le modifier
donc apparament je dois changer ma fonction d'afftab p etre devrai je le faire sans afficheVin?
Non, ça va très bien avec affVin().
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Alors qu'est ce qu'il faut que je fasse pour que ça marche.
Je conseille vivement de chercher un tutoriel sur les listes chainées...tableau dynamique en C![]()
j'ai reussi j'ai changer mon affichTab je l'ai fait avec un printf merci à tous de m'avoir aidé.
Partager