Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program conv_base;
- uses wincrt;
- TYPE
- eng = RECORD
- ch: string ;
- dec : integer;
- bin : string ;
- oct : string;
- end;
- fich = file of eng;
- VAR
- f:text;
- f2:fich;
- N:integer;
- chaine: string;
- b:byte;
- procedure saisie(VAR n:integer);
- begin
- repeat
- write('N=');
- readln(N);
- until N in [2..15];
- end;
- function verif (x:string):boolean;
- VAR i:integer;
- V:boolean;
- begin
- V:= TRUE;
- for i:=1 to length(x) do
- if NOT((x[i] in ['0'..'9']) OR (x[i] in ['A'..'Z']))
- then V:=FALSE;
- verif := V;
- end;
- procedure saisie2 (VAR chaine:string);
- begin
- repeat
- write('chaine=');
- readln(chaine);
- until verif(chaine);
- end;
- procedure remp (var f:text; N:integer);
- var i:integer; chaine:string;
- begin
- rewrite(f);
- for i:= 1 to N do
- begin
- saisie2(chaine);
- WriteLn(f,chaine);
- end;
- close(f);
- end;
- function convb_10(ch:string; b:byte):longint;
- var
- S:longint;
- P,i,e:integer;
- d:LongInt;
- begin
- S:= 0;
- P := 1;
- for i := length(ch) downto 1 do
- Begin
- if ch[i] in ['A' .. 'F'] then d:= ord(ch[i]) - 55
- else val(ch[i],d,e);
- S:=S+d*p;
- p:=p*b;
- end;
- convb_10 := S;
- end;
- function conv10_b (x:integer;b:byte):string;
- var
- ch,ch1:string;
- R:integer;
- begin
- ch:='';
- repeat
- R:= x mod b;
- if R >= 10 then ch1:= chr(R+55)
- else str(R,ch1);
- ch:= ch1 + ch;
- x := x div b
- until x=0;
- conv10_b:=ch;
- end;
- procedure remp2 (var f:text ; var f2:fich);
- var x:eng; chaine:string;
- begin
- reset(f);
- rewrite(f2);
- while not(eof(f)) do
- Begin
- readln(f,chaine);
- with x do
- begin
- ch := chaine;
- dec := convb_10(chaine,10);
- bin := conv10_b(dec,2);
- oct := conv10_b(dec,8);
- end;
- write(f2,x);
- end;
- close(f);
- close(f2);
- end;
- procedure aff (var f2:fich);
- var x:eng;
- i:byte;
- begin
- reset(f2);
- i:=1;
- while not(eof(f2)) do
- Begin
- read(f2,x);
- with x Do
- begin
- writeln('chaine ' , i ,' : ' , ch);
- writeln('chaine en deciamle : ' , dec);
- writeln('chaine en binaire : ' , bin);
- writeln('chaine en octal : ' , oct);
- end;
- i:=i+1;
- end;
- close(f2);
- end;
- begin
- assign(f,'C:\Pascal\conversion_hexa_to_bin_oct_dec_in_files\chaines_hexa.txt');
- assign(f2,'C:\Pascal\conversion_hexa_to_bin_oct_dec_in_files\chaines_convertit.dat');
- saisie(n);
- remp(f,n);
- remp2(f,f2);
- aff(f2);
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement