LOVEGUN

Devoir de controle 1 (Updated)

Nov 3rd, 2020 (edited)
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 3.00 KB | None | 0 0
  1. Program exerciceessai;
  2. Uses Wincrt;
  3. Type
  4.   date = Record
  5.     jour,mois,an: Integer;
  6.   End;
  7.   produit = Record
  8.     code: Integer;
  9.     nom: String;
  10.     dc: date;
  11.   End;
  12.   tab = Array [1..20] Of produit;
  13. Var
  14.   n: Integer;
  15.   t: tab;
  16.   f: Text;
  17. Procedure creation (Var f:Text);
  18. Begin
  19.   Assign (f,'c:\bac\Test Etude\produit.txt');
  20. End;
  21. Function premier (x:Integer): Boolean;
  22. Var
  23.   i,nb: Integer;
  24. Begin
  25.   nb := 0;
  26.   premier := False;
  27.   For i:=x Downto 2 Do
  28.     If (x Mod i) = 0 Then
  29.       nb := nb+1;
  30.   If nb=1 Then
  31.     premier := True;
  32. End;
  33.  
  34. Function majuspace (ch:String): Boolean;
  35. Var
  36.   i: Integer;
  37.   test: Boolean;
  38. Begin
  39.   i := 0;
  40.   Repeat
  41.     i := i+1;
  42.     test := Upcase(ch[i]) In ['A'..'Z',' '];
  43.   Until (test=False) Or (i=Length(ch));
  44.   majuspace := test;
  45. End;
  46.  
  47. Function distinct (t:tab;n:Integer;i:Integer): Boolean;
  48. Var
  49.   test: Boolean;
  50. Begin
  51.   If i=1 Then
  52.     test := True
  53.   Else
  54.     Repeat
  55.       test := t[i].code<>t[i-1].code;
  56.     Until (test=False) Or (i=n);
  57.   distinct := test;
  58. End;
  59.  
  60. Procedure remplir (Var t:tab;Var n:Integer);
  61. Var
  62.   i: Integer;
  63.   x: String;
  64.   test: Boolean;
  65. Begin
  66.   Repeat
  67.     Randomize;
  68.     n := Random (21);
  69.   Until n>=5;
  70.   Writeln ('L''entier choisi est : ',n);
  71.   For i:=1 To n Do
  72.     With t[i] Do
  73.       Begin
  74.         Repeat
  75.           Write ('Saisir le code du produit ',i,': ');
  76.           Readln (code);
  77.         Until (distinct (t,n,i)) And (premier(code)=False);
  78.         Repeat
  79.           Write ('Saisir le nom du produit ',i,': ');
  80.           Readln (nom);
  81.         Until (majuspace(nom)) And (nom[1]<>' ');
  82.         With dc Do
  83.           Begin
  84.             Repeat
  85.               Write ('Saisir le jour de création du produit ',i,':');
  86.               Readln (jour);
  87.             Until jour<=31;
  88.             Repeat
  89.               Write ('Saisir le mois de création du produit ',i,':');
  90.               Readln (mois);
  91.             Until mois<=12;
  92.             Repeat
  93.               Write ('Saisir l''an de création du produit ',i,':');
  94.               Readln (an);
  95.               Str (an,x);
  96.             Until Length(x)=4;
  97.           End;
  98.       End;
  99. End;
  100. Procedure affiche (t:tab;n:Integer);
  101. Var
  102.   i: Integer;
  103. Begin
  104.   Clrscr;
  105.   Writeln ('Les noms des produits dont le nom commence par une voyelle sont:');
  106.   For i:=1 To n Do
  107.     With t[i] Do
  108.       If nom[1] In ['a','e','i','o','u','y'] Then
  109.         Writeln (nom);
  110. End;
  111. Procedure transfert (Var f:Text;t:tab;n:Integer);
  112. Var
  113.   i: Integer;
  114. Begin
  115.   Rewrite (f);
  116.   Writeln (f,'Les produits Contruits 4 ans avant 2020 sont: ');
  117.   Writeln (f,'---------------------------------------------');
  118.   For i:=1 To n Do
  119.     If t[i].dc.an+4=2020 Then
  120.       Begin
  121.         Writeln (f,'Nom: ',t[i].nom);
  122.         Writeln (f,'Code: ',t[i].code);
  123.         Writeln (f,'Date de Creation: ',t[i].dc.jour,'/',t[i].dc.mois,'/',t[i].dc.an);
  124.         Writeln (f,'----------------------');
  125.       End;
  126.   Close (f);
  127. End;
  128. Begin
  129.   creation (f);
  130.   remplir (t,n);
  131.   affiche (t,n);
  132.   transfert (f,t,n);
  133. End.
  134.  
Add Comment
Please, Sign In to add comment