Advertisement
Guest User

Untitled

a guest
Feb 19th, 2020
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.44 KB | None | 0 0
  1. program cryptage;
  2. uses wincrt;
  3. Type
  4. strong=string[18];
  5. mat1=array['A'..'F','A'..'F'] of Char;
  6. mat2=array[1..7,1..6] of char;
  7.  
  8. Var
  9. msg:strong;
  10. mcl:string[6];
  11. M1:mat1;
  12. msgi:string;
  13. M2:mat2;
  14. Function verif(msg:strong):Boolean;
  15. Var
  16. i:Integer;
  17. Begin
  18. i:=1;
  19. while(i<=length(msg)) and (msg[i] in ['0'..'9','a'..'z',' ']) Do
  20. i:=i+1;
  21. verif:=i>length(msg);
  22. end;
  23. Function verifcl(mcl:String):Boolean;
  24. Var
  25. i:Integer;
  26. Begin
  27. i:=1;
  28. while(i<=length(mcl)) and (mcl[i] in ['A'..'Z']) Do
  29. i:=i+1;
  30. verifcl:=i>length(mcl);
  31. end;
  32. procedure message(var msg:strong);
  33. Begin
  34. Repeat
  35. write(' message a crypter = ');
  36. readln(msg);
  37. Until (length(msg)<=18) and verif(msg);
  38. end;
  39. procedure motcle(var mcl:String);
  40. Begin
  41. Repeat
  42. write('saisir le mot cle : ');
  43. readln(mcl);
  44. Until (Length(mcl)=6) and verifcl(mcl);
  45. end;
  46. procedure init(var M1:mat1);
  47. Var
  48. i,j,l,c: Char;
  49. ch: String;
  50. x : integer;
  51. Begin
  52. ch := 'abcdefghijklmnopqrstuvwxyz0123456789';
  53. for l:='A' to 'F' do
  54. begin
  55. for c:= 'A' to 'F' do
  56. begin
  57. Randomize;
  58. x := random(Length(ch))+1;
  59. m1[l,c] := ch[x];
  60. Delete(ch,x,1);
  61. write(m1[l,c]:4);
  62. end;
  63. writeln;
  64. end;
  65. end;
  66. Procedure affich(M1:mat1);
  67. Var
  68. i,j:char;
  69. Begin
  70. for i:='A' to 'F' Do
  71. Begin
  72. for j:='A'to'F' Do
  73. write(m1[i,j]);
  74. end;
  75. end;
  76. Function generer(var msgi:string;M1:mat1;msg:strong):string;
  77. Var
  78. i,j:char;
  79. l:integer;
  80. ch:string;
  81. Begin
  82. l:=1;
  83. ch:=msg;
  84. msgi:='';
  85. for i:='A' to 'F' Do
  86. Begin
  87. for j:='A' to 'F' Do
  88. Repeat
  89. if(ch[l]<>m1['A','F']) Then
  90. l:=l+1
  91. Else
  92. Begin
  93. msgi:=msgi+i+j;
  94. Delete(ch,l,1);
  95. end;
  96. Until l>Length(ch);
  97. end;
  98. generer:=msgi;
  99. end;
  100. Procedure rempM2(var M2:mat2;mcl:String);
  101. Var
  102. i,j:integer;
  103. Begin
  104. for i:=1 to 7 Do
  105. Begin
  106. for j:=1 to 6 Do
  107. If(msgi<>'') Then
  108. m2[i,j]:=' '
  109. else
  110. Begin
  111. m2[i,j]:=msgi[1];
  112. Delete(msgi,1,1);
  113. end;
  114. end;
  115. end;
  116. procedure tri(var M2:mat2);
  117. Var
  118. aux:Char;
  119. c,j,i:integer;
  120. begin
  121. for j:= 1 to 6 Do
  122. if(m2[1,j+1]<m2[1,j]) Then
  123. Begin
  124. for c:=1 to 7 Do
  125. Begin
  126. aux:=m2[c,j];
  127. m2[c,j]:=m2[c,j+1];
  128. m2[c,j+1]:=aux;
  129. end;
  130. end;
  131. end;
  132. procedure affiche(M2:mat2);
  133. Var
  134. i,j:integer;
  135. ch:string;
  136. begin
  137. ch:='';
  138. for i:= 1 to 6 Do
  139. Begin
  140. for j:= 2 to 7 Do
  141. ch:=ch+m2[j,i];
  142. end;
  143. write(ch);
  144. end;
  145. begin
  146. message(msg);
  147. motcle(mcl);
  148. init(M1);
  149. affich(M1);
  150. generer(msgi,M1,msg);
  151. rempM2(M2,mcl);
  152. tri(m2);
  153. affiche(M2);
  154. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement