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.
Partager