Advertisement
LOVEGUN

Bac 2012 (8h30) (Long)

Apr 28th, 2021
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 1.99 KB | None | 0 0
  1. Program bac2012;
  2. Uses Wincrt;
  3. Var
  4.   f1,f2: Text;
  5.  
  6. Procedure creation (Var f1,f2:Text);
  7. Begin
  8.   Assign (f1,'c:\bac\Nombres.txt');
  9.   Assign (f2,'c:\bac\Facteurs.txt');
  10. End;
  11.  
  12. Function verif (ch:String): Boolean;
  13. Var
  14.   i: Integer;
  15.   test: Boolean;
  16. Begin
  17.   i := 0;
  18.   Repeat
  19.     i := i+1;
  20.     test := ch[i] In ['0'..'9'];
  21.   Until (i=Length(ch)) Or (test=False);
  22.   verif := test;
  23. End;
  24.  
  25. Procedure remplir (Var f1:Text);
  26. Var
  27.   n,i,p: Integer;
  28.   ch: String;
  29. Begin
  30.   Rewrite (f1);
  31.   Repeat
  32.     Write ('Saisir N: ');
  33.     Readln (n);
  34.     Write ('Saisir P: ');
  35.     Readln (p);
  36.   Until (2<n) And (n<100) And (2<p) And (p<6);
  37.   For i:=1 To n Do
  38.     Begin
  39.       Repeat
  40.         Writeln ('Saisir l''entier ',i,': ');
  41.         Readln (ch);
  42.       Until (verif(ch)) And (Length(ch)=p);
  43.       Writeln (f1,ch);
  44.     End;
  45.   Close (f1);
  46. End;
  47.  
  48. Function fact (ch:String): String;
  49. Var
  50. i,n,e:integer;
  51. ch1:string;
  52. Begin
  53.   Val (ch,n,e);
  54.   i := 2;
  55.     ch:='';
  56.   Repeat
  57.         if (n mod i=0) Then
  58.             Begin
  59.                 n:=n div i;
  60.                 str (i,ch1);
  61.                 ch:=ch+ch1+',';
  62.             end
  63.         Else
  64.             i:=i+1;
  65.   Until (n=1);
  66.     fact:=ch;
  67. End;
  68.  
  69. Function crypt (ch:String): String;
  70. Var
  71.   c,ch1,ch2: String;
  72.   x: Integer;
  73. Begin
  74.   ch := fact(ch);
  75.   ch1 := '';
  76.   Repeat
  77.     c := Copy (ch,1,Pos(',',ch)-1);
  78.     x := 0;
  79.     While (Copy (ch,1,Pos(',',ch)-1)=c) Do
  80.       Begin
  81.         x := x+1;
  82.         Delete (ch,1,Pos(',',ch));
  83.       End;
  84.     Str (x,ch2);
  85.     ch1 := ch1+ch2+c;
  86.   Until (ch='');
  87.   crypt := ch1;
  88. End;
  89. Procedure traitement (Var f1,f2:Text);
  90. Var
  91.   ch: String;
  92. Begin
  93.   Reset (f1);
  94.   Rewrite (f2);
  95.   While Not(Eof(f1)) Do
  96.     Begin
  97.       Readln (f1,ch);
  98.       Writeln (f2,crypt(ch));
  99.     End;
  100.   Close (f1);
  101.   Close (f2);
  102. End;
  103.  
  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.     remplir (f1);
  119.     traitement (f1,f2);
  120.     affiche (f2);
  121. End.
  122.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement