Conversion d'un entier d'une base be [2..10] à une autre base bs [2..10], ce programme compile mais sans rien donner; pourtant je crois que c'est logique. Est-ce que quelqu’un pourrait me dire où est l'erreur ? J'ai cependant vu plusieurs autres façons d'aborder la conversion entre les bases mais je voudrais de l'aide pour ce que j'ai fait. Merci
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
program convert;
uses wincrt;
var be,bs,n:integer;
 
function puissance (be,i:integer):integer;
var j,x:integer;
begin
     x:=1;
     for j:=0 to i do
     x:= x*be;
     puissance := x;
end;
 
function conversion (n,be,bs:integer):integer;
var i,s,r,e:integer;
    ch,c:string;
begin
     if be <> 10 then
     begin
          i:=0;s:=0;
          while n<>0 do
          begin
               r:= n mod 10;
               n:= n div 10;
               s:= s +r* puissance (be,i);
               i:=i+1;
          end;
     end
     else
     s:=n;
 
     if bs <> 10 then
          begin
               ch :=' ';
               while s<>0 do
                     begin
                          r:= s mod bs;
                          s:= s div bs;
                          str (r,c);
                          ch:=c+ch;
                     end;         
                     val (ch,s,e);
          end;
 
       conversion:=s;
end;
 
begin
write ('n= '); readln (n);
repeat
      write ('be= ');readln (be);
until be in [2..10];
 
repeat
      write ('bs= ');readln (bs);
until bs in [2..10];
writeln (n, ' en base ',be,' devient ',conversion (n,be,bs),' en base ',bs);
end.