Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program ex2;
- uses crt;
- type
- fonctionnaire = record
- num_mat : Integer;
- nom: String[15];
- prenom: String[10];
- end;
- FichierF = File of fonctionnaire;
- tab = array[1..50] of fonctionnaire;
- var
- FA, FB, F: FichierF;
- T, T1, T2: tab;
- N1, N2: Integer;
- procedure saisie(var n: Integer);
- begin
- repeat
- write('Entrez le nombre des fonctionnaires : ');
- readln(n);
- until (N in [2..50]);
- end;
- procedure remplir(var f:FichierF; n:Integer; nom:String);
- var
- Fonc: fonctionnaire;
- i: Integer;
- begin
- assign(f, nom);
- rewrite(f);
- for i := 1 to n do
- begin
- with Fonc do
- begin
- write('Entrez le numero de matricule du fonctionnaire ',i,' : ');
- readln(num_mat);
- write('Entrez le nom de fonctionnaire ',i,' : ');
- readln(nom);
- write('Entrez le prenom de fonctionnaire ',i,' : ');
- readln(prenom);
- end;
- write(f, Fonc);
- end;
- end;
- procedure transfert1(var F:FichierF; n: Integer; var T:tab);
- var
- i: Integer;
- Fonc: fonctionnaire;
- begin
- reset(F);
- for i := 1 to n do
- begin
- read(F, Fonc);
- T[i] := Fonc;
- end;
- end;
- procedure transfert2(T: tab; n: Integer; var F:FichierF);
- var
- i: Integer;
- begin
- reset(F);
- for i := 1 to n do
- write(F,T[i]);
- end;
- procedure tri(var T:tab; n:Integer);
- var
- i: Integer;
- v: boolean;
- procedure permute(var h1,h2: fonctionnaire);
- var
- aux: fonctionnaire;
- begin
- aux := h1;
- h1 := h2;
- h2 := aux;
- end;
- begin
- repeat
- v := true;
- for i := 1 to (n-1) do
- if (T[i].nom > T[i+1].nom) then
- begin
- permute(T[i], T[i+1]);
- v := false;
- end;
- until (v = true);
- end;
- procedure affiche(var F:FichierF);
- var
- Fonc: fonctionnaire;
- begin
- reset(F);
- while not(EOF(F)) do
- begin
- read(F, Fonc);
- with Fonc do
- begin
- writeln('num_mat = ',num_mat);
- writeln('Nom = ', nom);
- writeln('prenom = ', prenom);
- end;
- end;
- end;
- procedure fusion(T1,T2: tab; n,m: Integer; var T:tab);
- var
- i,j,k: Integer;
- begin
- i := 1;
- j := 1;
- k := 1;
- while ((i<=n) and (j<=m)) do
- begin
- if (T1[i].nom<T2[j].nom) then
- begin
- T[k] := T1[i];
- k := k+1;
- i := i+1;
- end
- else
- begin
- T[k] := T2[j];
- k := k+1;
- j := j+1;
- end;
- end;
- while (i<=n) do
- begin
- T[k] := T1[i];
- k := k+1;
- i := i+1;
- end;
- while (j<=n) do
- begin
- T[k] := T2[j];
- k := k+1;
- j := j+1;
- end;
- end;
- procedure creation(var F:FichierF; nom:string);
- begin
- assign(F, nom);
- rewrite(F);
- end;
- {procedure test_affiche_tab(t:tab; n:Integer);
- var
- i: Integer;
- begin
- for i := 1 to n do
- begin
- writeln('num_mat[',i,']',T[i].num_mat);
- writeln('nom[',i,']',T[i].nom);
- writeln('prenom[',i,']',T[i].prenom);
- end;
- end;}
- begin
- writeln('===SAISIE N1===');
- saisie(N1);
- writeln('===REMPLISSAGE FA===');
- remplir(FA, N1, 'C:\Users\Houssem\Desktop\files\agence_A.dat');
- writeln('===SAISIE N2===');
- saisie(N2);
- writeln('===REMPLISSAGE FB===');
- remplir(FB, N2, 'C:\Users\Houssem\Desktop\files\agence_B.dat');
- transfert1(FA, N1, T1);
- tri(T1, N1);
- transfert2(T1, N1, FA);
- transfert1(FB, N2, T2);
- tri(T2, N2);
- transfert2(T2, N2, FB);
- fusion(T1, T2, N1, N2, T);
- creation(F, 'C:\Users\Houssem\Desktop\files\agence.dat');
- transfert2(T, N1+N2, F);
- affiche(F);
- close(FA);
- close(FB);
- readln;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement