Advertisement
LOVEGUN

Bac 2010 14H30

Feb 25th, 2021
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 2.03 KB | None | 0 0
  1. Program bac201414h;
  2. Uses Wincrt;
  3. Var
  4.   f,f2: Text;
  5. Procedure creation (Var f,f2:Text);
  6. Begin
  7.   Assign (f,'c:\bac\nb_nombres.txt');
  8.   Assign (f2,'c:\bac\nombre.txt');
  9. End;
  10. Function verif (ch:String): Boolean;
  11. Var
  12.   test: Boolean;
  13.   i: Integer;
  14. Begin
  15.   i := 0;
  16.   Repeat
  17.     i := i+1;
  18.     test := ch[i] In ['0'..'9','A'..'F'];
  19.   Until (test=False) Or (i=Length(ch));
  20.   verif := test;
  21. End;
  22. Procedure remplir (Var f:Text);
  23. Var
  24.   ch: String;
  25.   n,i: Integer;
  26. Begin
  27.   Repeat
  28.     Write ('Saisir n: ');
  29.     Readln (n);
  30.   Until (n<=10) And (1<=n);
  31.   Clrscr;
  32.   Rewrite (f);
  33.   For i:=1 To n Do
  34.     Begin
  35.       Repeat
  36.         Write ('Saisir la chaine ',i,': ');
  37.         Readln (ch);
  38.       Until (Length(ch)<=5) And (verif(ch));
  39.       Writeln (f,ch);
  40.       Clrscr;
  41.     End;
  42.   Close (f);
  43. End;
  44. Function base (ch:String): Integer;
  45. Var
  46.   max: Char;
  47.   e,i,b: Integer;
  48. Begin
  49.   max := ch[1];
  50.   For i:=2 To Length(ch) Do
  51.     If ch[i]>max Then
  52.       max := ch[i];
  53.   If (max In ['A'..'F']) Then
  54.     b := Ord(max)-55
  55.   Else
  56.     Val (max,b,e);
  57.   base := b+1;
  58. End;
  59.  
  60. Function convert (ch:String;b:Integer): Integer;
  61. Var
  62.   s,i,p,e: Integer;
  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
  69.         Begin
  70.           s := s+p*(Ord(ch[i])-55);
  71.           p := b*p;
  72.         End
  73.       Else
  74.         Begin
  75.           s := s+p*(Ord(ch[i])-48);
  76.           p := b*p;
  77.         End;
  78.     End;
  79.   convert := s;
  80. End;
  81.  
  82. Procedure traitement (Var f,f2:Text);
  83. Var
  84.   ch: String;
  85.   b: Integer;
  86. Begin
  87.   Reset (f);
  88.   Rewrite (f2);
  89.   While Not (Eof(f)) Do
  90.     Begin
  91.       Readln (f,ch);
  92.       b := base (ch);
  93.       Writeln (f2,'(',ch,')',b,' = (',convert(ch,b),')10');
  94.     End;
  95.   Close (f);
  96.   Close (f2);
  97. End;
  98.  
  99. Procedure affiche (Var f2:Text);
  100. Var
  101.   ch: String;
  102. Begin
  103.   Reset (f2);
  104.   While Not (Eof(f2)) Do
  105.     Begin
  106.       Readln (f2,ch);
  107.       Writeln (ch);
  108.     End;
  109.   Close (f2);
  110. End;
  111. Begin
  112.   creation (f,f2);
  113.   remplir (f);
  114.   traitement (f,f2);
  115.   affiche (f2);
  116. End.
  117.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement