Addition de deux polynômes avec liste chaînée
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:
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; |