salut
S'il vous plait est ce que vous pouvez m'aider a trouver les fautes que je fais dans mon programme(le prof me demande de changer les procédures et de le faire autrement)
l'exercice :
1.copiez le fichier foc6h.dat, fichier de cercles.
2.définir le type qui décrit l'élément de "one-directional list" qui contient le champ du cercle
3.désigner une procédure qui reçoit le fichier" foc6h.dat", lire ces éléments, commençant par le début et les écrire dansone directional-list
4.désigner une procédure, qui reçoit le fichier, lire ces éléments commençant par le début et les écrire dans one directional list en reversant leur ordre
5.désigner une procédure, qui reçoit une list, et créer une nouvelle avec les element reversé
6.désigner une procédure, qui imprime une liste dans l'écran terminal
7.démontrer l'appel de tes procédures.
___________________________________________________________
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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
 
program ex6f (f, input, output);
type
  Circles = record
 
A : real;
 
B : real;
 
C : real;
 
end;
 
fol = file of Circles;
 
plist = ^listel;
 
listel = record
 
l : Circles;
 
n : plist;
 
end;
 
var
 
l : Circles;
 
list, revlist : plist;
 
f : fol;
 
procedure PrintL(l : Circles);
 
begin
 
Writeln('Circles : ', l.A:3:2, '*x + ',l.B:3:2,'*y + ',l.C:3:2,' = 0');
 
end;
 
procedure ReadList(var f: fol; var pl: plist);
 
var i : integer;
 
q, last : plist;
 
l : Circles;
 
begin
 
Reset(f);
 
if EOF(f) then pl := nil
 
else begin
 
Read(f,l);
 
new(last);
 
last^.l := l;
 
last^.n := nil;
 
pl := last;
 
while not EOF(f) do begin
 
Read(f, l);
 
new(q);
 
q^.l := l;
 
last^.n := q;
 
last := q;
 
end;
 
last^.n := nil;
 
end;
 
end;
 
function listCount(pl:plist):integer;
 
var i:integer;
 
begin
 
i:= 1;
 
while pl^.n <> nil do
 
begin
 
i := i + 1;
 
pl := pl^.n;
 
end;
 
listCount := i;
 
end;
 
function listElement(pl: plist; i:integer):plist;
 
var j:integer;
 
begin
 
j:= 1;
 
while j < i do
 
begin
 
if pl^.n <> nil then pl := pl^.n;
 
j := j + 1;
 
end;
 
listelement := pl;
 
end;
 
procedure ReverseList(var pl:plist);
 
var retList, tmpList:plist; i,j: integer;
 
begin
 
i := listCount(pl);
 
new (retList);
 
retList^.n := nil;
 
retList^.l := listElement(list, 1)^.l;
 
for j:= 2 to i do
 
begin
 
new(tmpList);
 
tmpList^.n := retList;
 
tmpList^.l := listElement(list, j)^.l;
 
retList := tmpList;
 
end;
 
end;
 
procedure RevReadList(var f: fol; var pl: plist);
 
var i : integer;
 
q, last : plist;
 
l : circles;
 
begin
 
Reset(f);
 
if EOF(f) then pl := nil
 
else begin
 
Read(f,l);
 
new(last);
 
last^.l := l;
 
last^.n := nil;
 
pl := last;
 
while not EOF(f) do begin
 
Read(f, l);
 
new(q);
 
q^.l := l;
 
last^.n := q^.n;
 
last := q;
 
end;
 
last^.n := nil;
 
end;
 
end;
 
procedure PrintList(pl: plist);
 
begin
 
Writeln('Printing...');
 
while (pl <> nil) do begin
 
PrintL(pl^.l);
 
pl := pl^.n;
 
end;
 
Writeln('Done.');
 
end;
 
begin
 
new(list);
 
new(revlist);
 
ReadList(f, list);
 
PrintList(list);
 
{ RevReadList(f, revlist);
 
PrintList(revlist);
 
ReverseList(list);
 
PrintList(list);
 
}
 
dispose(list);
 
dispose(revlist);
 
end.