Bonjour

Je dois réaliser un programme qui additionne 2 polynômes. J'ai créé des procédures qui ordonnent un polynôme mais j'ai une erreur lors de l'exécution du programme pour l'addition.
Je sais que cela signifie qu'il y a un problème avec les maillons mais je ne le trouve pas.

Pouvez-vous m'aider ?

Voici mon programme
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
 
procedure addition (po1, po2:polynome; s:polynome);
  var p1, p2, som, ms, mp: polynome;
  begin
  p1 := po1;
  p2 := po2;
  som := nil;
  while (p1<>nil) or (p2<>nil) do
        begin
            while (som^.lien<>nil)do begin
                       mp:=som;
                       som:=som^.lien;
                        end;     
            if (p1^.puis = p2^.puis) then
                begin
                   if (p1^.coef + p2^.coef <> 0) then
                          begin
                                ms := som;
                                new (som);
                                som^.coef := p1^.coef + p2^.coef;
                                som^.puis := p1^.puis;
                                som^.lien := ms;
                                ms^.lien := som;
                                p1 := p1^.lien;
                                p2 := p2^.lien;
                           end
                           else begin
                                      p1 := p1^.lien;
                                      p2 := p2^.lien;
                                  end;
                    end
                         else
                              begin
                                    if (p1^.puis < p2^.puis) then
                                         begin
                                                ms := som;
                                                new (som);
                                                som^.coef := p2^.coef;
                                                som^.puis := p2^.puis;
                                                som^.lien := ms;
                                                 ms^.lien := som;
                                                 p2 := p2^.lien;
                                             end
                                       else begin
                                                ms := som;
                                                new (som);
                                                som^.coef := p1^.coef;
                                                som^.puis := p1^.puis;
                                                som^.lien := ms;
                                                ms^.lien := som;
                                                p1 := p1^.lien;
                                       end;
                             end;
        end;
  end;