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
| program inverttx;
uses wincrt;
var
t, t2 : Text;
ch : string;
procedure invertch(var ch : string);
var
i, l : Integer;
c : Char;
begin
l := Length(ch);
for i := 1 to l div 2 do
begin
c := ch[i];
ch[i] := ch[l - i + 1];
ch[l - i + 1] := c;
end;
end;
function nbrline(var t : Text): Integer;
begin
{ if not (Eof(t)) then
begin
Readln(t);
nbrline := 1 + nbrline(t);
end
else
nbrline := 0; }
{ On admet que t est positionné au début.
Si ce n'est pas le cas, ajouter Reset(t) }
nbrline := 0;
while not(Eof(t)) do
begin
ReadLn(t);
Inc(nbrline);
end;
end;
procedure seektxt(var t : Text; p : Integer);
var
i : Integer;
begin
Reset(t);
for i := 1 to p do
Readln(t);
end;
procedure writet2txt(var t, t2 : Text; n : Integer);
var
x1 : string;
begin
seektxt(t, n);
Readln(t, x1);
invertch(x1);
if n = 0 then
Write (t2, x1)
else
Writeln(t2, x1);
end;
procedure inverttxt(var t, t2 : Text; n : Integer);
begin
if n >= 0 then
begin
writet2txt(t, t2, n);
inverttxt(t, t2, n - 1);
end;
end;
begin
Assign(t, 'c:\text.txt');
Reset(t);
Assign(t2, 'c:\text2.txt');
Rewrite(t2);
inverttxt(t, t2, nbrline(t) - 1);
Close(t2);
Close(t);
Erase(t);
Rename(t2, 'c:\text.txt');
end. |
Partager