Bonjour,
je viens de faire un programme qui permet de transformer une base donnée en une autre base.
L'idée que j'ai utilisée est de convertir chaque nombre en décimal puis le diviser sur la base désirée.
Mais ça n'a pas marché.
SVP aidez-moi à corriger ce programme ou donnez-moi une autre idée.
Merci d'avance

Voilà 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
56
57
58
59
60
program base;
uses wincrt;
type
tab=array[1..100] of integer;
var
t:tab;
b1,b2,c,result:integer;
ch:string;
procedure lecture(var b1:integer;var b2:integer;var ch:string);
begin
writeln('donner la base a transferé');
readln(b1);
writeln ('donner la base auqelle  vous aller transformé');
readln(b2)  ;
writeln('donner le chiffre');
readln (ch);
end;
 
 
procedure som( ch:string;b1:integer);
var
  i, L, poid,Result : integer ;
begin
  L := Length(Ch) ;
  Poid := 1 ;
  Result := 0 ;
  for i := L downto 1 do
  begin
    Result := Result + ( Ord(Ch[i]) - Ord('0') ) * Poid ;
    Poid := Poid * b1 ;
  end ;
end ;
 
procedure divi(b1:integer;var result:integer) ;
var
  i,c : integer ;
begin
  c := 0 ;
 repeat
  c:=c+1;
  t[i]:= result mod b1;
  result:=result div b1;
  until result =0  
 
end;
procedure affichage(t:tab;c:integer);
var
i:integer;
begin
for i:= c downto 1 do
if t[i] in [1..9] then write (t[i])
else write(chr(ord('A')+t[i]-10) );
end;
 
begin
lecture(b1,b2,ch);
som(ch,b1);
divi(b1,result);
affichage(t,c);
end.