1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122
| program fich;
uses wincrt;
type
rec=record
nom:string;
moy:integer;
end;
tab=array[1..30]of rec;
var f:text;
t:tab;
n:integer;
{-------------------------------------------------------------------------}
procedure remplirt(var f:text; var nb:integer);
var rep:char;
e:rec;
begin
nb:=0;
repeat
writeln('Entrer Le nom d''elève:');
readln(e.nom);
writeln('Entrer La myenne:');
readln(e.moy);
writeln(f,e.nom,':',e.moy);
repeat
writeln('voulez vous continuer?o/n');
readln(rep);
nb:=nb+1;
until upcase(rep)in['O','N'];
until upcase(rep)='N';
close(f);
end;
{-------------------------------------------------------------------------}
procedure transfert(var f:text;var t:tab;nb:integer);
var ch,x,d,ch1,ch2:string;
i,j,p,x1,e:integer;
begin
reset(f);
for i:=1 to nb do
begin
j:=0;
readln(f,ch);
repeat
j:=j+1;
until ch[j]in['1'..'9'];
if ch[j]in['1'..'9']then
begin
p:=j;
ch1:=copy(ch,length(ch),nb);
val(ch1,x1,e);
t[i].moy:=x1;
end
else
begin
ch2:=copy(ch,p-1,1);
t[i].nom:=ch2;
end;
close(f);
end;
end;
{-------------------------------------------------------------------------}
procedure trier(var t:tab;n:integer);
var p,i,j:integer;
tmp:rec;
begin
p:=1;
while p<=n do
p:=p*3+1;
while p<>0 do
begin
p:=p div 3;
for i:=p to n do
begin
tmp:=t[i];
j:=i;
while (j>p)and(ord((t[j-p].nom)[1])<ord(tmp.nom[1]))do
begin
t[j]:=t[j-p];
j:=j-p;
end;
t[j]:=tmp;
end;
end;
end;
{-------------------------------------------------------------------------}
procedure transfich(var f:text;n:integer;t:tab);
var i:integer;
begin
reset(f);
for i:=1 to n do
begin
with t[i]do
begin
writeln(f,nom,moy);
end;
end;
close(f);
end;
{-------------------------------------------------------------------------}
procedure afficher(var f:text);
var e:rec;
begin
reset(f);
while not(eof(f))do
begin
readln(f,e.nom,e.moy);
writeln(e.nom,e.moy);
end;
close(f);
end;
{-------------------------------------------------------------------------}
begin
assign(f,'c:\so\fichiers.txt');
rewrite(f);
remplirt(f,n);
transfert(f,t,n);
writeln('tableau trasferé!!');
trier(t,n);
writeln('tableau trié!!');
transfich(f,n,t);
writeln('fichier transféré!!');
afficher(f);
end. |
Partager