Advertisement
LOVEGUN

bac 2019 (prob)(theo)

Apr 3rd, 2021
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 2.33 KB | None | 0 0
  1. Program bac19pb;
  2. Uses Wincrt;
  3. Type
  4.   tab = Array ['A'..'G','A'..'F'] Of Char;
  5. Var
  6.   m1,m2: tab;
  7.   mot,msg: String;
  8.  
  9. Function verif1 (ch:String): Boolean;
  10. Var
  11.   i: Integer;
  12.   test: Boolean;
  13. Begin
  14.   i := 0;
  15.   Repeat
  16.     i := i+1;
  17.     test := ch[i] In ['a'..'z','0'..'9',' '];
  18.   Until (i=Length(ch)) Or (test=false);
  19.   verif1 := test;
  20. End;
  21.  
  22. Function verif2 (ch:String): Boolean;
  23. Var
  24.   i: Integer;
  25.   test: Boolean;
  26. Begin
  27.   i := 0;
  28.   Repeat
  29.     i := i+1;
  30.     test := ch[i] In ['A'..'Z'];
  31.   Until (i=Length(ch)) Or (test=false);
  32.   verif2 := test;
  33. End;
  34.  
  35. Procedure saisie (Var msg,mot:String);
  36. Begin
  37.   Repeat
  38.     Write ('Saisir le msg: ');
  39.     Readln (msg);
  40.   Until (Length(msg)<=18) And (verif1(msg));
  41.   Repeat
  42.     Write ('Saisir le mot clé: ');
  43.     Readln (mot);
  44.   Until (Length(mot)=6) And (verif2(mot));
  45. End;
  46.  
  47. Procedure remplir (Var m1:tab);
  48. Var
  49.   i,j: Char;
  50.     f:text;
  51. Begin
  52.   Assign (f,'C:\bac\matrice.txt');
  53.   Reset (f);
  54.   For i:='A' To 'F' Do
  55.     For j:='A' To 'F' Do
  56.       Readln (f,m1[i,j]);
  57.   Close (f);
  58. End;
  59.  
  60. Function position (c:Char;m:tab): String;
  61. Var
  62. i,j:char;
  63. Begin
  64.   For i:='A' To 'F' Do
  65.     For j:='A' To 'F' Do
  66.       If m[i,j]=c Then position := i+j;
  67. End;
  68. Procedure tri_bul (Var t:tab);
  69. Var
  70.   i,aux,j,n: char;
  71. Begin
  72. n:='F';
  73.   Repeat
  74.         For i:='A' To chr(ord(n)-1) Do
  75.         If t['A',i]>t['A',succ(i)] Then
  76.           Begin
  77.             for j:='A' to 'G' Do
  78.                             Begin
  79.                                 aux := t[j,i];
  80.                     t[j,i] := t[j,succ(i)];
  81.                     t[j,succ(i)] := aux;
  82.                             end;
  83.           End;
  84.     n := chr(ord(n)-1);
  85.   Until n=pred('A');
  86. End;
  87. Procedure traitement (m1:tab;Var m2:tab;msg,mot:String);
  88. Var
  89.   x: Integer;
  90.   ch: String;
  91.     i,j:char;
  92. Begin
  93.   ch := '';
  94.   For x:=1 To Length(msg) Do
  95.     If msg[x]=' ' Then
  96.       ch := ch+' '
  97.     Else
  98.       ch := ch+position(msg[x],m1);
  99.         for i:='A' to 'F' Do
  100.             m2['A',i]:=mot[ord(i)-64];
  101.         x:=0;
  102.         for i:='B' to 'G' Do
  103.             for j:='A' to 'F' Do
  104.                 Begin
  105.                     x:=x+1;
  106.                     m2[i,j]:=ch[x];
  107.                 end;
  108.         tri_bul(m2);
  109.         ch:='';
  110.             for j:='A' to 'F' Do
  111.                 for i:='B' to 'G' Do
  112.                 ch:=ch+m2[i,j];
  113.         writeln (ch);
  114. End;
  115. Begin
  116.   saisie (msg,mot);
  117.   remplir (m1);
  118.   traitement (m1,m2,msg,mot);
  119. End.
  120. {
  121.     c
  122. 1
  123. o
  124. f
  125. w
  126. j
  127. y
  128. m
  129. t
  130. 5
  131. b
  132. 4
  133. i
  134. 7
  135. a
  136. 2
  137. 8
  138. s
  139. p
  140. 3
  141. 0
  142. q
  143. h
  144. x
  145. k
  146. e
  147. u
  148. l
  149. 6
  150. d
  151. v
  152. r
  153. g
  154. z
  155. n
  156. 9
  157. }
  158.  
  159.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement