Je viens de faire un programme qui calcule la différence entre deux chiffres saisis en type string mais il se bloque dans l'exécution.

Voici mon travail :
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
 
program somme;
uses wincrt;
var
aa,ch1,ch2,a:string;
procedure lecture (var aa:string);
var
n,e:integer;
begin
repeat
readln(aa);
val(aa,n,e);
until (e=0)
end;
 
procedure ajout(var ch1 :string;var ch2:string);
begin
if length(ch1) < length(ch2) then repeat ch1:= '0'+ch1 until length(ch1) = length(ch2) 
else begin    repeat  ch2 := '0' + ch2  until  length(ch1) = length(ch2) end;
end;
 
 
function diff (ch1, ch2:string ):string;
var
 
c,chdif:string;
n1,n2,i,e1,e2,n,aux:integer;
begin
chdif:='';
aux:=0;
 
for i := length(ch1) downto 1 do begin
 
 
val(ch1[i],n1,e1);
val(ch2[i],n2,e2);
 
n2:=n2 + aux ;
 
if (n1>n2) then begin n:=n1 - n2; 
 aux :=0 ;
  end
 
else begin n:= (n1  + 10 ) - n2   ;
 aux :=1    ;
 
  end;
str(n,c);
 
chdif:=c+chdif;
end;
diff:=chdif;
end;
 
begin
lecture(ch1);
lecture(ch2);
ajout(ch1,ch2);
a:=diff(ch1,ch2);
end.