Advertisement
LOVEGUN

Devoir de contrôle 2

Feb 8th, 2021
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 2.08 KB | None | 0 0
  1. Program Cryptage;
  2. Uses Wincrt;
  3. Var
  4.   f1,f2: Text;
  5. Procedure creation (Var f1,f2:Text);
  6. Begin
  7.   Assign (f1,'c:\bac\Messages.txt');
  8.   Assign (f2, 'c:\bac\Mess_Crypt.txt');
  9. End;
  10. Function premier (ch:String): Boolean;
  11. Var
  12.   r,i,n: Integer;
  13. Begin
  14.   n := Length(ch);
  15.   r := 0;
  16.   For i:=1 To n Div 2 Do
  17.     If n Mod i = 0 Then
  18.       r := r+1;
  19.   premier := r>1;
  20. End;
  21. Function alpha (ch:String): Boolean;
  22. Var
  23.   i: Integer;
  24.   test: Boolean;
  25. Begin
  26.   i := 0;
  27.   Repeat
  28.     i := i+1;
  29.     test := ch[i] In ['A'..'Z'];
  30.   Until (test=False) Or (i=Length(ch));
  31.   alpha := test;
  32. End;
  33.  
  34. Procedure saisie (Var f1:Text);
  35. Var
  36.   n,i: Integer;
  37.   m: String;
  38. Begin
  39.   Rewrite (f1);
  40.   Repeat
  41.     Writeln ('Saisir N:');
  42.     Readln (n);
  43.   Until (n<=50) And (n>=1);
  44.   For i:=1 To n Do
  45.     Begin
  46.       Repeat
  47.         Writeln ('Saisir le message ',i,' : ');
  48.         Readln (m);
  49.       Until (Length(m)>4) And (premier(m)) And (alpha (m));
  50.       Writeln (f1,m);
  51.     End;
  52.   Close (f1);
  53. End;
  54. function divis (ch:string):string;
  55. Var
  56. ch1:string;
  57. n,i:integer;
  58. Begin
  59. n:=Length(ch);
  60. ch:='';
  61. for i:=2 to n div 2 Do
  62.     if n mod i =0 Then
  63.     Begin
  64.         str (i,ch1);
  65.         ch:=ch+ch1+',';
  66.     end;
  67. divis:=ch;
  68. end;
  69. function invers (ch:string;x:integer):string;
  70. Var
  71. ch1:string;
  72. i:integer;
  73. Begin
  74.     ch1:='';
  75.     repeat
  76.         for i:=x downto 1 Do
  77.             ch1:=ch1+ch[i];
  78.         delete (ch,1,x);
  79.     Until ch='';
  80. invers:=ch1;
  81. end;
  82. Procedure traitement (Var f1,f2:Text);
  83. Var
  84. n,ch,ch1:string;
  85. e,x,i:integer;
  86. Begin
  87.   Reset (f1);
  88.   Rewrite (f2);
  89.   While Not(Eof(f1)) Do
  90.     Begin
  91.             readln (f1,ch);
  92.             ch1:=divis(ch);
  93.             for i:=1 to Length(ch1) div 2 Do
  94.                 Begin
  95.                     val (copy(ch1,1,Pos(',',ch1)-1),x,e);
  96.                     delete (ch1,1,pos(',',ch1));
  97.                     ch:=invers(ch,x);
  98.                 end;
  99.                 writeln (f2,'Le message crypté est: ',ch);
  100.         End;
  101.   Close (f1);
  102.   Close (f2);
  103. End;
  104. procedure affiche (var f2:text);
  105. Var
  106. ch:string;
  107. Begin
  108.     reset (f2);
  109.     while not(eof(f2)) Do
  110.     Begin
  111.         readln (f2,ch);
  112.         writeln (ch);
  113.     end;
  114.     close (f2);
  115. end;
  116. Begin
  117.   creation (f1,f2);
  118.   saisie (f1);
  119.     traitement (f1,f2);
  120.     affiche (f2);
  121. End.
  122.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement