Advertisement
Guest User

Exercice 2

a guest
Jan 26th, 2015
195
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 3.25 KB | None | 0 0
  1. program ex2;
  2. uses crt;
  3. type
  4.     fonctionnaire = record
  5.         num_mat : Integer;
  6.         nom: String[15];
  7.         prenom: String[10];
  8.     end;
  9.     FichierF = File of fonctionnaire;
  10.     tab = array[1..50] of fonctionnaire;
  11. var
  12.     FA, FB, F: FichierF;
  13.     T, T1, T2: tab;
  14.     N1, N2: Integer;
  15.  
  16. procedure saisie(var n: Integer);
  17. begin
  18.     repeat
  19.         write('Entrez le nombre des fonctionnaires : ');
  20.         readln(n);
  21.     until (N in [2..50]);
  22. end;
  23. procedure remplir(var f:FichierF; n:Integer; nom:String);
  24. var
  25.     Fonc: fonctionnaire;
  26.     i: Integer;
  27. begin
  28.     assign(f, nom);
  29.     rewrite(f);
  30.  
  31.     for i := 1 to n do
  32.     begin
  33.         with Fonc do
  34.         begin
  35.             write('Entrez le numero de matricule du fonctionnaire ',i,' : ');
  36.             readln(num_mat);
  37.             write('Entrez le nom de fonctionnaire ',i,' : ');
  38.             readln(nom);
  39.             write('Entrez le prenom de fonctionnaire ',i,' : ');
  40.             readln(prenom);
  41.         end;
  42.         write(f, Fonc);
  43.     end;
  44. end;
  45. procedure transfert1(var F:FichierF; n: Integer; var T:tab);
  46. var
  47.     i: Integer;
  48.     Fonc: fonctionnaire;
  49. begin
  50.     reset(F);
  51.     for i := 1 to n do
  52.     begin
  53.         read(F, Fonc);
  54.         T[i] := Fonc;
  55.     end;
  56. end;
  57. procedure transfert2(T: tab; n: Integer; var F:FichierF);
  58. var
  59.     i: Integer;
  60. begin
  61.     reset(F);
  62.     for i := 1 to n do
  63.         write(F,T[i]);
  64. end;
  65. procedure tri(var T:tab; n:Integer);
  66. var
  67.     i: Integer;
  68.     v: boolean;
  69. procedure permute(var h1,h2: fonctionnaire);
  70. var
  71.     aux: fonctionnaire;
  72. begin
  73.     aux := h1;
  74.     h1 := h2;
  75.     h2 := aux;
  76. end;
  77. begin
  78.     repeat
  79.         v := true;
  80.         for i := 1 to (n-1) do
  81.             if (T[i].nom > T[i+1].nom) then
  82.             begin
  83.                 permute(T[i], T[i+1]);
  84.                 v := false;
  85.             end;   
  86.     until (v = true);  
  87. end;
  88. procedure affiche(var F:FichierF);
  89. var
  90.     Fonc: fonctionnaire;
  91. begin
  92.     reset(F);
  93.     while not(EOF(F)) do
  94.     begin
  95.         read(F, Fonc);
  96.         with Fonc do
  97.         begin
  98.             writeln('num_mat = ',num_mat);
  99.             writeln('Nom = ', nom);
  100.             writeln('prenom = ', prenom);
  101.         end;
  102.     end;
  103. end;
  104. procedure fusion(T1,T2: tab; n,m: Integer; var T:tab);
  105. var
  106.     i,j,k: Integer;
  107. begin
  108.     i := 1;
  109.     j := 1;
  110.     k := 1;
  111.  
  112.     while ((i<=n) and (j<=m)) do
  113.     begin
  114.         if (T1[i].nom<T2[j].nom) then
  115.         begin
  116.             T[k] := T1[i];
  117.             k := k+1;
  118.             i := i+1;
  119.         end
  120.         else
  121.         begin
  122.             T[k] := T2[j];
  123.             k := k+1;
  124.             j := j+1;
  125.         end;
  126.     end;
  127.     while (i<=n) do
  128.     begin
  129.         T[k] := T1[i];
  130.         k := k+1;
  131.         i := i+1;
  132.     end;
  133.     while (j<=n) do
  134.     begin
  135.         T[k] := T2[j];
  136.         k := k+1;
  137.         j := j+1;
  138.     end;
  139. end;
  140. procedure creation(var F:FichierF; nom:string);
  141. begin
  142.     assign(F, nom);
  143.     rewrite(F);
  144. end;
  145.  
  146. {procedure test_affiche_tab(t:tab; n:Integer);
  147. var
  148.     i: Integer;
  149. begin
  150.     for i := 1 to n do
  151.     begin
  152.         writeln('num_mat[',i,']',T[i].num_mat);
  153.         writeln('nom[',i,']',T[i].nom);
  154.         writeln('prenom[',i,']',T[i].prenom);
  155.     end;
  156. end;}
  157.  
  158. begin
  159.     writeln('===SAISIE N1===');
  160.     saisie(N1);
  161.     writeln('===REMPLISSAGE FA===');
  162.     remplir(FA, N1, 'C:\Users\Houssem\Desktop\files\agence_A.dat');
  163.     writeln('===SAISIE N2===');
  164.     saisie(N2);
  165.     writeln('===REMPLISSAGE FB===');
  166.     remplir(FB, N2, 'C:\Users\Houssem\Desktop\files\agence_B.dat');
  167.     transfert1(FA, N1, T1);
  168.     tri(T1, N1);
  169.     transfert2(T1, N1, FA);
  170.     transfert1(FB, N2, T2);
  171.     tri(T2, N2);
  172.     transfert2(T2, N2, FB);
  173.     fusion(T1, T2, N1, N2, T);
  174.     creation(F, 'C:\Users\Houssem\Desktop\files\agence.dat');
  175.     transfert2(T, N1+N2, F);
  176.  
  177.     affiche(F);
  178.  
  179.     close(FA);
  180.     close(FB);
  181.     readln;
  182. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement