Bonjour,

d'abord
>J'utilise TP7
>Je débute ^^

Mon problème: ce code ne renvoie pas toujours la même chose:

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
type
  liste=^mots;
  mots=
  record
    contenu:string;
    suiv:liste;
  end;
 
procedure ajoutemot(i:string; var l:liste);
begin
  if l=nil then
  begin
    new(l);
    l^.contenu:=i;
  end
  else begin
    ajoutemot(i,l^.suiv)
  end
end;
 
var l:liste;
 
begin
  ajoutemot('yop',l);
  writeln(l=nil);
  writeln(l^.suiv=nil);
  ajoutemot('yep',l);
  writeln(l^.contenu);
  writeln(l^.suiv^.contenu);
end.
Ce code, comme vous le constatez, ne prend rien en entrée (j'ai fait ce programme juste pour tester la procédure).

Voici le problème: il n'écrit pas toujours la même chose, et je ne comprend pas pourquoi:
Première éxécution il écrit:
FALSE
TRUE
yop
yep
Deuxième éxécution:
FALSE
FALSE
yop
yep
Troisième éxécution: error 202:stack overflow error

La procédure, vous l'aurez compris, sert à ajouter un mot à la liste (chainée) de mots.

Pouvez vous me dire où est l'erreur?
Et tant qu'à faire, pouvez vous me donner une procédure qui marche?

Merci beaucoup

thelinekioubeur