Форум «Всё о Паскале» _ Задачи _ файл как параметр подпрограммы
Автор: svetkom 14.12.2006 11:41
помогите пжалста найти ошибку... не компиллируется код. задача такая. создать файл типа integer. в него записать n целыx чисел. потом переписать их в другой файл в такой последовательности: а1,а2,а3,а2,а1,а4,а5,а6,а5,а4.. и так до конца, используя подпрограммы. вот что получилось:
Код
program l9; uses crt; var f,g:file of integer; n,c,d,i:byte; b:integer; procedure to_g(const p,c,d:byte; var f,g:file of integer); {ошибку выдаёт здесь.компиллятор требует скобку после слова file... что ему не нравится?} var m,s:integer; begin m:=p; while m<>c do begin seek(f,m); read(f,s); write(g,s); m:=m+1; end; m:=m-1; while m<>p do begin seek(f,m-1); read(f,s); write(g,s); m:=m-1; end; end;
procedure kratn(n:byte; const c,d:byte;var f,g:file of integer); var j,p:byte; begin p:=0; while p<>n do begin for j:=1 to n/c do to_n(p,c,d,f,g); p:=p+d; end; end;
procedure ne_kratn(n:byte; const c,d:byte;var f,g:file of integer); var j,p:byte; s:integer; begin p:=0; while p<>n do begin for j:=1 to n/c do to_n(p,c,d,f,g); p:=p+d; end; while not eof(f) do begin read(f,s); write(g,s); end; end;
begin clrscr; assign(f,'f.dat'); assign(g,'g.dat'); writeln('vvedite N - koli4estvo 4isel v ishodnoi posledovatelnosti'); read(n); writeln('vvedite eti 4isla'); rewrite(f); for i:=1 to n do begin read(b); write(f,b); end; close(f); writeln('vvedite C');read(c); {в моей задаче с дано и равно 3-после каждого третего эл-та записаны два предыдущих, я решила обобщить} d:=2*c-1; {это сумма эл-тов напр а1,а2,а3,а2,а1.тоже для обобщения} reset(f); rewrite(g); if (n mod c)=0 then kratn(n,c,d,f,g) else ne_kratn(n,c,d,f,g); close(g); reset(g); reset(f); writeln('ishodnii fail:'); while not eof(f) do begin read(f,b); write(b,' '); end; writeln; writeln('polu4ennii fail:'); while not eof(g) do begin read(g,b); write(b,' '); end; close(f); close(g); readkey; end.
в каждой подпрограмме такая ошибка. без них всё работает, но код настолько больше! да и по требованиям подпрограммы нужны. пробовала передать как параметр-значение, тоже ошибка( что здесь может быть не так?
Автор: Lapp 14.12.2006 12:14
Цитата(svetkom @ 14.12.2006 8:41)
помогите пжалста найти ошибку... не компиллируется код. procedure to_g(const p,c,d:byte; var f,g:file of integer); {ошибку выдаёт здесь.компиллятор требует скобку после слова file... что ему не нравится?}