LOVEGUN

Devoir de controle 1

Nov 2nd, 2020 (edited)
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 2.87 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):Boolean;
  48. Var
  49.   i: Integer;
  50.     test:Boolean;
  51. Begin
  52.   i := 0;
  53.   Repeat
  54.     i := i+1;
  55.     test := t[i].code<>t[i+1].code;
  56.   Until (test=False) Or (i=n-1);
  57. End;
  58.  
  59. Procedure remplir (Var t:tab;Var n:Integer);
  60. Var
  61.   i: Integer;
  62.   x: String;
  63.   test: Boolean;
  64. Begin
  65.   Repeat
  66.     Randomize;
  67.     n := Random (21);
  68.   Until n>=5;
  69.   Writeln ('L''entier choisi est : ',n);
  70.   For i:=1 To n Do
  71.         With t[i] Do
  72.       Begin
  73.         Repeat
  74.           Write ('Saisir le code du produit ',i,': ');
  75.           Readln (code);
  76.                 Until (distinct (t,n)) And (premier(code)=False);
  77.         Repeat
  78.           Write ('Saisir le nom du produit ',i,': ');
  79.           Readln (nom);
  80.         Until (majuspace(nom)) and (nom[1]<>' ');
  81.         With dc Do
  82.           Begin
  83.             Repeat
  84.               Write ('Saisir le jour de création du produit ',i,':');
  85.               Readln (jour);
  86.             Until jour<=31;
  87.             Repeat
  88.               Write ('Saisir le mois de création du produit ',i,':');
  89.               Readln (mois);
  90.             Until mois<=12;
  91.             Repeat
  92.               Write ('Saisir l''an de création du produit ',i,':');
  93.               Readln (an);
  94.               Str (an,x);
  95.             Until Length(x)=4;
  96.           End;
  97.       End;
  98. End;
  99. Procedure affiche (t:tab;n:integer);
  100. Var
  101. i:integer;
  102. Begin
  103.     ClrScr;
  104.     writeln ('Les noms des produits dont le nom commence par une voyelle sont:');
  105.     for i:=1 to n do
  106.         with t[i] Do
  107.         if nom[1] in ['a','e','i','o','u','y'] Then
  108.         writeln (nom);
  109. end;
  110. procedure transfert (var f:text;t:tab;n:integer);
  111. Var
  112. i:integer;
  113. Begin
  114. ReWrite (f);
  115. writeln (f,'Les produits Contruits 4 ans avant 2020 sont: ');
  116. writeln (f,'---------------------------------------------');
  117. for i:=1 to n do
  118. if t[i].dc.an+4=2020 Then
  119. Begin
  120. writeln (f,'Nom: ',t[i].nom);
  121. writeln (f,'Code: ',t[i].code);
  122. writeln (f,'Date de Creation: ',t[i].dc.jour,'/',t[i].dc.mois,'/',t[i].dc.an);
  123. writeln (f,'----------------------');
  124. end;
  125. close (f);
  126. end;
  127. Begin
  128.     creation (f);
  129.     remplir (t,n);
  130.     affiche (t,n);
  131.     transfert (f,t,n);
  132. End.
  133.  
Add Comment
Please, Sign In to add comment