Bonjour à tous,
Ayant commencé un bachelier en informatique cette année, on m'a demandé de créer une unité qui puisse générer un tableau statique de manière aléatoire ou par entrée clavier et qui puisse l'afficher.
Cependant, ayant raté une bonne partie des cours sur les tableaux et les unités, je me retrouve avec quelques lacunes que je n'arrive pas à combler![]()
Je développe ce programme sous Lazarus.
Voici donc l'unité censée créer et afficher mon tableau :
J'effectue mon appel d'unité de la manière suivante (l'erreur provient sûrement d'ici) :
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 unit unit_tableau; interface uses seqint; const indmin = 1; indmax = 10; type elem = integer; Ttab = array [indmin .. indmax] of elem; procedure ChargeTab (var t:Ttab; var long:integer); { effet: initialise le tableau t Ã* partir de la première composante gauche avec un contenu aléatoire (provenant d'une séquence quelconque) et calcule dans long le nombre de composantes initialisées } procedure ClavTab(var t:Ttab; var long:integer); { effet: initialise le tableau t depuis le clavier. (999 joue le rôle de sentinelle si on ne souhaite pas remplir complètement le tableau). et calcule dans long le nombre de composantes initialisées. } procedure ChargeDefTab (var t: Ttab; var long:integer ); { effet: initialise le tableau t Ã* partir de la première composante gauche avec le contenu d'une séquence de caractéristique genre (croissante, doublesvt) et calcule dans long le nombre de composantes initialisées. Exception : si taille s > indmax --> le chargement se limite Ã* indmax composantes.} procedure AfficheTab (const t: Ttab; const long:integer ); { effet : affiche les composantes significatives du tableau (les longs premières composantes du tableau) } implementation procedure ChargeTab (var t:Ttab; var long:integer); var s:tseqint; it: tseqiter; begin s:=tseqInt.create(quelconque); it:=tseqIter.init(s); long:=indmin-1; while (long< indmax ) and not it.aubout do begin inc(long); t[long] :=it.valeurCourante; end; end ; procedure ClavTab(var t:Ttab; var long:integer); var x:integer; begin long:=indmin -1; readln(x); while (long<indmax) and (x<> 999) do begin inc(long); t[long]:= x; readln(x); end; end; procedure ChargeDefTab (var t: Ttab; var long:integer ); var s:tseqint; it: tseqiter; begin s:=tseqInt.create(quelconque); it:=tseqIter.init(s); long:=indmin-1; while (long< indmax ) and not it.aubout do begin inc(long); t[long] :=it.valeurCourante; end; end ; procedure AfficheTab (const t: Ttab; const long:integer ); var i:integer; begin for i:=1 to long do write(t[i]:4); writeln; end ; end.
Lorsque je compile, pas de souci hormis que le compilateur me dit que z ne semble pas avoir été initialisé.
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 program Project1; uses unit_tableau; var a:integer; z:Ttab; begin a:=1; writeln('salut'); ChargeTab(z,a) ; writeln('voila'); AfficheTab(z,a); writeln('fini'); readln(); end.
Mais à l'exécution, Lazarus n'affiche la fenêtre du programme que durant 1 sec.
J'ai réussi à screen-shooter le message mais je ne vois pas à quoi correspond le problème
[IMG][/IMG]
Voilà, en espérant que quelqu'un puisse m'éclairer![]()
Partager