Advertisement
M1RAI

convert

Feb 25th, 2020
207
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 2.55 KB | None | 0 0
  1. program conv_base;
  2. uses wincrt;
  3. TYPE
  4. eng = RECORD
  5. ch: string ;
  6. dec : integer;
  7. bin : string ;
  8. oct : string;
  9. end;
  10.  fich = file of eng;
  11.  
  12.  VAR
  13.  f:text;
  14.  f2:fich;
  15. N:integer;
  16. chaine: string;
  17. b:byte;
  18.  
  19. procedure saisie(VAR n:integer);
  20. begin
  21.     repeat
  22.         write('N=');
  23.         readln(N);
  24.     until N in [2..15];
  25. end;
  26.  
  27. function verif (x:string):boolean;
  28. VAR i:integer;
  29. V:boolean;
  30. begin
  31.     V:= TRUE;
  32.     for i:=1 to length(x) do
  33.         if NOT((x[i] in ['0'..'9']) OR (x[i] in ['A'..'Z']))
  34.         then V:=FALSE;
  35.     verif := V;
  36. end;
  37.  
  38. procedure saisie2 (VAR chaine:string);
  39. begin
  40.     repeat
  41.         write('chaine=');
  42.         readln(chaine);
  43.     until verif(chaine);
  44. end;
  45.  
  46. procedure remp (var f:text; N:integer);
  47. var i:integer; chaine:string;
  48. begin
  49.     rewrite(f);
  50.     for i:= 1 to N do
  51.      begin
  52.         saisie2(chaine);
  53.         WriteLn(f,chaine);
  54.     end;
  55.     close(f);
  56. end;
  57.  
  58. function convb_10(ch:string; b:byte):longint;
  59. var
  60. S:longint;
  61. P,i,e:integer;
  62. d:LongInt;
  63. begin
  64.     S:= 0;
  65.     P := 1;
  66.     for i := length(ch) downto 1 do
  67.     Begin
  68.         if ch[i] in ['A' .. 'F'] then d:= ord(ch[i]) - 55
  69.         else val(ch[i],d,e);
  70.         S:=S+d*p;
  71.         p:=p*b;
  72.     end;
  73.     convb_10 := S;
  74. end;
  75.  
  76. function conv10_b (x:integer;b:byte):string;
  77. var
  78. ch,ch1:string;
  79. R:integer;
  80. begin
  81.     ch:='';
  82.     repeat
  83.         R:= x mod b;
  84.         if R >= 10 then ch1:= chr(R+55)
  85.         else str(R,ch1);
  86.         ch:= ch1 + ch;
  87.         x := x div b
  88.     until x=0;
  89.     conv10_b:=ch;
  90. end;
  91.  
  92. procedure remp2 (var f:text ; var f2:fich);
  93. var x:eng; chaine:string;
  94. begin
  95.     reset(f);
  96.     rewrite(f2);
  97.     while not(eof(f)) do
  98.     Begin
  99.         readln(f,chaine);
  100.         with x do
  101.         begin
  102.             ch := chaine;
  103.             dec := convb_10(chaine,10);
  104.             bin := conv10_b(dec,2);
  105.             oct := conv10_b(dec,8);
  106.         end;
  107.         write(f2,x);
  108.     end;
  109.     close(f);
  110.     close(f2);
  111. end;
  112. procedure aff (var f2:fich);
  113. var x:eng;
  114.         i:byte;
  115. begin
  116.     reset(f2);
  117.     i:=1;
  118.     while not(eof(f2)) do
  119.     Begin
  120.         read(f2,x);
  121.         with x Do
  122.         begin
  123.             writeln('chaine ' , i ,' : ' , ch);
  124.             writeln('chaine en deciamle : ' , dec);
  125.             writeln('chaine en binaire : ' , bin);
  126.             writeln('chaine en octal : ' , oct);
  127.         end;
  128.         i:=i+1;
  129.     end;
  130.     close(f2);
  131. end;
  132.  
  133.        
  134.            
  135.    
  136.  
  137. begin
  138.     assign(f,'C:\Pascal\conversion_hexa_to_bin_oct_dec_in_files\chaines_hexa.txt');
  139.     assign(f2,'C:\Pascal\conversion_hexa_to_bin_oct_dec_in_files\chaines_convertit.dat');
  140.     saisie(n);
  141.     remp(f,n);
  142.     remp2(f,f2);
  143.     aff(f2);
  144. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement