Salut
J'ai programmé l'unité ci-après mais je ne n'arrive pas a utiliser celle-ci dans le programme principal.
J'ai le message suivant : "Type mismatch" lorque j'appelle une fonction (ou procédure) de l'unité.
Par ailleurs, les déclarations des variables de l'unité doivent correspondre exactement à ce que l'on prévoit d'utiliser dans le programme principal ?
Comment déclarer les variables du programme principal pour utiliser cette unité, dans le cas où on veut ajouter un élément entré par l'utilisateur dans un tableau ?
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 Unit FILOU ; Interface Const longmax = 10 ; Nmax = 4 ; Type Fifo = record tab : Array [1..longmax] of string; sommet : 0..Nmax ; end; Procedure retirer (var Elt: string;var F : Fifo) ;{renvoie lélément pointé par tête et diminue tête dune unité. } Procedure ajouter (var Elt : string ; var F : Fifo);{{ajoute dans le tableau dans la case pointée par fin un élément et tête augmente dune unité. } Procedure premier (var Elt: string; P : Fifo );{fournit une copie de lélément pointé par tête (la file reste intacte)} Function Est_vide (P: Fifo): boolean ; IMPLEMENTATION Procedure retirer (var Elt : string ; var F : Fifo); {condition initialiser sommet a Nmax} Begin If F.sommet = 0 then F.sommet := Nmax; {reponse a la condition} ELT := F.Tab[F.sommet] ; {renvoit element pointe par tete} F.sommet := F.sommet -1 ; {diminue tete de 1 unite} F.Tab[F.sommet + 1]:=' '; {retire element pointe } end; Procedure ajouter (var Elt: string ; var F: Fifo ); {Initialiser sommet a 0 } var Fi: Fifo ; {tableau de sauvegarde } a , l : integer ; {variable d'incrementation } begin If F.sommet = Nmax then F.sommet := 0 ; {Initialiser sommet a 0 } {sauvegarder le contenu du tableau f dans Fi (tableau interne)} For l := F.sommet to Nmax do Fi.Tab[l] := F.Tab[l] ; { decale le contenu du tableau d'une unité} For a := F.sommet to Nmax do F.tab [a + 1 ]:= Fi.tab[a] ; F.sommet := 1 ; {Pointeur en fin } F.tab[F.sommet] := elt ; {ajoute element a l'espace pointe } end; Procedure premier (var Elt: string ; P : fifo); var Sommeti : 0..20 ; {variable de sauvegarde de sommet} Begin sommeti := P.sommet ; P.sommet := Nmax ; {pointe tete} Elt := P.Tab[P.sommet] ; {renvoit element pointe par tete} P.sommet := sommeti ; end; Function Est_vide (P : fifo ): boolean ; var i: integer ; s: string ;{variable de sauvegarde de contenu de tab[i] } Begin i := -1 ; {initialise i à -1 } s := ' '; {fait le vide dans s } Repeat { scanne le file du debut a l fin} i := i + 1 ; {incrementer i} s := P.Tab[i] ; { introduit le contenu du tableau dans s afin de proceder o test } Until (s <> ' ') or ( i >= Nmax + 1 ); {sortir si contenu de s n'est pas vide ou si variable i depasse la longeur de la file } If i >= Nmax + 1 then Est_vide := true {si i > longmax d la lfile alors file est vide} else Est_vide := false ; {sinon file non vide } End ; BEGIN END.
Un exemple de programme utilisant cette unité sera le bienvenu.
........................................................................MERCI D'AVANCE.............................................................................
Partager