Помогите найти ошибку:
Задание: Одно из возможных представлений "длинного" текста - это разделить
его на участки (строки) равной длины и создать массив ссылок на эти строки:
const d =...; {Длина строки }
n =...; {Максимальное число строк}
type stroka = string[d];
Ref = ^stroka;
tekst = Array [1..n] of Ref;
Если текст содержит менее n строк, то последние элементы массива равны Nil. Если в операции над текстом указан номер отсутствующей строки, т.е. элемент массива с этим номером равен Nil, то такая операция не выполняется. Используя данное представление текста, описать процедуру Удалить(T,i), удаляющую i-ю строку из текста T, а следующие за ней строки сдвигает.
Программа:
Задание: Одно из возможных представлений "длинного" текста - это разделить
его на участки (строки) равной длины и создать массив ссылок на эти строки:
const d =...; {Длина строки }
n =...; {Максимальное число строк}
type stroka = string[d];
Ref = ^stroka;
tekst = Array [1..n] of Ref;
Если текст содержит менее n строк, то последние элементы массива равны Nil. Если в операции над текстом указан номер отсутствующей строки, т.е. элемент массива с этим номером равен Nil, то такая операция не выполняется. Используя данное представление текста, описать процедуру Удалить(T,i), удаляющую i-ю строку из текста T, а следующие за ней строки сдвигает.
Программа:
| Код |
|---|
program lab_13;
const d=25;
n=100;
type stroka=string[d];
Ref=^stroka;
tekst=array [1..n] of Ref;
var i,t:integer;
f:text;
s:string;
s1:stroka;
a:tekst;
procedure http(k:integer);
var j:integer;
begin
if a[k]<>nil then
dispose(a[k]);
for j:=k to n-1 do
a[j]:=a[j+1];
end;
begin
Writeln('Введите название файла');
readln(s);
Assign(f,s);
Reset(f);
i:=0;
While not eof(f) do
begin
Readln(f,s);
While s<>'' do
begin
i:=i+1;
s1:= copy(s,1,24);
new(a[i]);
a[i]^:=s1;
delete(s,1,24);
end;
end;
if i<n then
for t:=i to n do
a[t]:=nil;
Writeln('Введите номер строки для удаления');
readln(t);
http(t);
while a[i]<>nil do
write(a[i]^);
while a[i]<>nil do
dispose(a[i]);
Close(f);
readln;
end. |