Bonjour tout le monde,
je veux faire un programme qui permet de convertir un nombre hexadecimal en binaire. voici le code source:
le problème est que la saisie accepte tout et en plus elle ne répète pas la saisie si le nombre donné n'est pas valide.
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
61
62
63
64
65
66
67
68 program convert_hexa; uses WinCrt; var p:real; var n:string; function convcar(c:char):string; var d:integer; var r,e,i:integer; var ch1,c2:string; begin if(c in['0'..'9'])then val(c,d,e) else d:=ord(c)-ord('A')+10; ch1:='0000'; i:=4; repeat r:=d mod 2; str(r,c2); ch1[i]:=c2[1]; i:=i-1; d:=d div 2; until (d=0); convcar:=ch1; end; function convertir(ch:string):string; var res:string; i:integer; begin res:=''; for i:=1 to length(ch)do begin res:=res+convcar(ch[i]); end; convertir:=res; end; function valide(ch:string):boolean; var i: integer; var b:boolean; begin b:=false; writeln('entrée dans valide'); i:=0; repeat i:=i+1; writeln('le caractère ',i, 'est: ',ch[i]); b:=UPCASE(ch[i])in['0'..'9','A'..'F'] ; {writeln(b);} until ((b=false) or (i=length(ch))) end; procedure saisie(var n:string); begin repeat write('Donnez le nombre hexadecimal: '); readln(n); until(valide(n)); writeln('la valeur de valide est : ',valide(n)); end; begin saisie(n); writeln('le code binaire est: ',convertir(n)); end.
pouvez vous m'aider s'il vous plait, je n'arrive pas à détecter l'erreur
Merci pour votre aide
Partager