Добрый день. Помогите, пожалуйста, написать программу.
В строках текстового файла содержатся целые числа. Преобразовать строки файла следующим образом: вначале должны идти четные числа, упорядоченные по возрастанию, а затем нечетные, упорядоченные по убыванию. Их надо записать в другой файл.
Есть программа, но она выдаёт мне ошибки.
Код:
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 | Program files;
type mas= array [ 1..100 ] of integer ;
var f1, f2: text;
a, b, d:mas;
k, p, i, j: integer ;
procedure Readfile (f1:text; var a:mas; var k: integer );
begin
p:= 0 ;
k:= 0 ;
while not eof (f1) do
begin
readln (f1,a[k]);
k:=k+ 1 ;
end ;
end ;
Procedure Check ( var a:mas; p: integer );
var k, i, j: integer ; b, d: mas;
begin
i:= 1 ;
j:= 1 ;
for k:= 1 to p do
begin
if (a[k] mod 2 = 0 ) then
begin
b[i]:=a[k];
i:=i+ 1 ;
end
else
begin
d[j]:=a[k];
j:=j+ 1 ;
end ;
end ;
end ;
procedure Regularise( Var b,d: mas; var i, j: integer ; f2:text);
var H,Y : integer ;
begin
assign(f2, 'C:\Users\User\Desktop\f2.txt' );
rewrite(f2);
H:= 0 ;
Y:= 0 ;
while i<>High(b)+ 1 do
begin
if b[i]> b[i+ 1 ] then
begin
H:=b[i];
b[i]:=b[i+ 1 ];
b[i+ 1 ]:=H;
readln (f2, b[i]);
end ;
end ;
while j<>High(d)+ 1 do
begin
if d[j]< d[j+ 1 ] then
begin
Y:=d[j];
d[j]:=d[j+ 1 ];
d[j+ 1 ]:=Y;
readln (f2, d[j]);
end ;
end ;
close (f2);
end ;
begin
assign(f1, 'C:\Users\User\Desktop\f1.txt' );
reset(f1);
Readfile(f1, a, k);
Check(a, p);
assign(f2, 'C:\Users\User\Desktop\f2.txt' );
rewrite(f2);
Regularise(b, d, i, j, f2);
closefile(f1);
closefile(f2);
end .
|
lmikle: пользуемся тегами.