Bonjour,
Je ne comprends pas comment résoudre ce problème.
Construire en C une liste L à quatre éléments dans le code du programme à l'aide de cons. Testez car(L), car(cdr(L), car(cdr(cdr L)), car(cdr(cdr(cdr L))), en affichant leur résultat.
La première question : le code marche bien mais dès que j'ajoute caar rien ne marche plus :s
Définir en C, à l'aide de #define, caar et cadr. Construisez une liste pour les tester et afficher leur résultat.
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 # include <stdio.h> # include <stdlib.h> #define nil NULL typedef struct node { int car ; struct node * cdr ; } node, * list ; void usage(char *) ; list cons(int car, list L); void putlist(list L); int car(list L); list cdr(list L); int main() { list L = nil ; int k; for (k = 0 ; k < 4 ; k++) L = cons(k, L) ; putlist(L) ; printf("\n"); printf("car : %d\n", car(L)); putlist(cdr(L)); printf("\n"); printf("car(cdr(L) : %d\n", car(cdr(L))); printf("car(cdr(cdr L)) : %d\n",car(cdr(cdr (L)))); printf("car(cdr(cdr(cdr L))) : %d\n",car(cdr(cdr(cdr (L))))); return 0 ; } list cons(int car, list L) { list new = malloc(sizeof(node)) ; if (! new) usage("cons : manque de RAM") ; new -> car = car ; new -> cdr = L ; return new ; } void putlist(list L) { if (! L) return ; printf("%d ", L -> car) ; putlist(L -> cdr) ; } int car(list L) { return L -> car ; } list cdr(list L) { return L -> cdr; } void usage(char * P) { printf("Usage : %s erreur", P), exit(1) ; }
Merci de m'aider
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 langgg.c: In function main: langgg.c:31:4: warning: passing argument 1 of car makes pointer from integer without a cast [enabled by default] putlist(caar(L)); ^ langgg.c:10:5: note: expected list but argument is of type int int car(list L); ^ langgg.c:31:4: warning: passing argument 1 of putlist makes pointer from integer without a cast [enabled by default] putlist(caar(L)); ^ langgg.c:9:6: note: expected list but argument is of type int void putlist(list L);
Partager