LOVEGUN

Warming up (Exercice Conversion De Base)

Apr 12th, 2021 (edited)
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 1.82 KB | None | 0 0
  1. {https://cdn.discordapp.com/attachments/440593885740269568/831246181837307955/image0.jpg}
  2. Program revision2;
  3. Uses Wincrt;
  4. Var
  5.   f: Text;
  6.  
  7. Function premier (ch:String): Boolean;
  8. Var
  9.   r,n,e,i: Integer;
  10. Begin
  11.   Val (ch,n,e);
  12.   r := 0;
  13.   For i:=1 To n Do
  14.     If n Mod i=0 Then
  15.       r := r+1;
  16.   premier := r=2;
  17. End;
  18.  
  19. Function convert_2(ch:String): String;
  20. Var
  21.   c: String;
  22.   n,e: Integer;
  23. Begin
  24.   Val (ch,n,e);
  25.   ch := '';
  26.   Repeat
  27.     Str (n Mod 2,c);
  28.     ch := c+ch;
  29.     n := n Div 2;
  30.   Until (n=0);
  31.   convert_2 := ch;
  32. End;
  33.  
  34. Function convert16 (ch:String): String;
  35. Var
  36.   c: String;
  37.   n,e: Integer;
  38. Begin
  39.   Val (ch,n,e);
  40.     writeln (ch);
  41.     ch:='';
  42.   Repeat
  43.     If (n Mod 16)>=10 Then
  44.       Begin
  45.                 ch := Chr(55+n Mod 16)+ch;
  46.         n := n Div 16;
  47.       End
  48.     Else
  49.       Begin
  50.         Str (n Mod 16,c);
  51.         ch := c+ch;
  52.         n := n Div 16;
  53.       End;
  54.   Until n=0;
  55.   convert16 := ch;
  56. End;
  57.  
  58. Function comptage0 (ch:String): Integer;
  59. Var
  60.   r,i: Integer;
  61. Begin
  62.   r := 0;
  63.   For i:=1 To Length(ch) Do
  64.     If ch[i]='0' Then
  65.       r := r+1;
  66.   comptage0 := r;
  67. End;
  68.  
  69. Function valide (ch:String): Boolean;
  70. Var
  71.   ch1,ch2,ch3: String;
  72. Begin
  73.   ch1 := Copy (ch,1,3);
  74.   ch2 := Copy (ch,4,5);
  75.   ch3 := Copy (ch,9,5);
  76.   If (premier (ch1)) And (comptage0(convert_2(ch2))>8) And ((Pos('E',convert16(ch3))<>0) Or (Pos('F'
  77.      ,
  78.      convert16(ch3))<>0) Or (Pos('D',convert16(ch3))<>0)) Then
  79.     valide := True
  80.   Else
  81.     valide := False;
  82. End;
  83.  
  84. Procedure traitement (Var f:Text);
  85. Var
  86.   ch: String;
  87. Begin
  88.   Reset (f);
  89.   While Not (Eof (f)) Do
  90.     Begin
  91.       Readln (f,ch);
  92.       If valide (ch) Then
  93.         Writeln (ch,': code valide')
  94.       Else
  95.         Writeln (ch,': code déjà utilisé');
  96.     End;
  97.   Close (f);
  98. End;
  99. Begin
  100.   Assign (f,'c:\bac\code.txt');
  101.   traitement (f);
  102. End.
  103.  
Add Comment
Please, Sign In to add comment