LOVEGUN

Bac 2015 23/05 (rework) (80%)

Jan 13th, 2021 (edited)
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 1.23 KB | None | 0 0
  1. Program bac2015;
  2. Uses Wincrt;
  3. Type
  4.   suite = Record
  5.     dep,nb: Integer;
  6.   End;
  7.   tab = Array [1..30] Of suite;
  8. Var   f: Text; p:integer; t:tab;
  9. Procedure creation (Var f:Text);
  10. Begin
  11.     assign (f,'c:\bac\depart.txt');
  12. End;
  13. Procedure remplir (Var f:Text;var p:integer);
  14. Var i,n:integer;
  15. Begin
  16.     rewrite (f);
  17.     Repeat
  18.         write ('Saisir le nombre de termes: '); readln (p);
  19.     until (p>=2) and (p<=30);
  20.     for i:=1 to p Do
  21.     Begin
  22.         Repeat
  23.             write ('Saisir un termes: '); readln (n);
  24.         Until (2<n) and (n<1000);
  25.         writeln (f,n);
  26.     end;
  27.     close (f);
  28. End;
  29. function convergence (x:integer):integer;
  30. Var i:integer;
  31. Begin
  32.     i:=0;
  33.     Repeat
  34.         if (x mod 2=0) Then x:=(x div 2) else x:=3*x+1;
  35.         i:=i+1;
  36.     until (x=1);
  37.     convergence:=i;
  38. end;
  39. Procedure traitement (Var f:Text;var t:tab;p:integer);
  40. Var i,x,e:integer; ch:string;
  41. Begin
  42.     reset (f);
  43.     for i:=1 to p Do
  44.         with t[i] Do
  45.             Begin
  46.                 readln (f,ch);
  47.                 val (ch,x,e);
  48.                 dep:=x;
  49.                 nb:=convergence(x);
  50.             end;
  51.             close (f);
  52. end;
  53. Procedure affiche (t:tab;p:integer);
  54. Var i:integer;
  55. Begin
  56.   For i:=1 To p Do
  57.     With t[i] Do
  58.       Writeln (i,') ','Depart: ',dep,' / nb: ',nb);
  59. End;
  60. Begin
  61.   creation (f);
  62.   remplir (f,p);
  63.   traitement(f,t,p);
  64.   affiche(t,p);
  65. End.
Add Comment
Please, Sign In to add comment