IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> однонаправленный линейный список, удалить из списка строки с n-ой по k-ую.
сообщение
Сообщение #1


Влюблённый псих
***

Группа: Пользователи
Сообщений: 185
Пол: Женский
Реальное имя: Лейла

Репутация: -  1  +



uses crt;
Type
next=^elem;
Elem=RECORD
EL:string;
Sled:next;
END;
VAR
Uk1:next;
Qp,N,K,Int:Integer;

Procedure VVOD(var p:next); {формирование однонаправленного линейного списка, подсчет количества строк в исходном файле, чтение списка в файл RES.OUT}
var
m:next;
F1:text;
BEGIN
Assign(F1,'DAN.inp');
Reset(f1);
Assign(output,'res.out');
rewrite(output);
Writeln('Дано: ');
New(m);
New(m^.sled);
p:=m;
Readln(f1, m^.el);
m^.sled:=nil;
Int:=1;
while not EOF(f1) do
begin
New(m^.sled);
m:=m^.sled;
Int:=Int+1;
Readln(f1, m^.el);
m^.sled:=nil;
End;
Close(f1);
m:=p;
While m<>NIL do
Begin
Writeln(m^.el);
m:=m^.sled;
End;
end;

procedure Cleaning(var uk:next); {процедура удаления из списка с N-ой по K-ую строки}
var pp,q,r:next;
D:integer;
Begin
writeln('ВСЕГО СТРОК в исходном файле: ',Int);
If (N>Int) or (K>Int) then
Begin
Writeln ('Запрашиваемых Вами строк нет, исходные данные не изменились');
exit; {выход из процедуры в случае ошибки пользователя}
end;
D:=1;
While (D>=N) and (D<=K) do BEGIN
If D=K then Begin {удаляем конечную строку}
pp:=uk;
q:=uk;
while pp^.sled<>NIL do
Begin
q:=pp;
pp:=pp^.sled;
End;
q^.Sled:=NiL;
Dispose(pp);
end;

If D=N then Begin {удаляем начальную строку}

pp:=uk;
uk:=uk^.sled;
Dispose(pp);
end;
D:=D+1;
pp:=pp^.sled; {указатель смещается на одну позицию, счетчик увеличивается}

While (D>=N) and (D<=K) do
Begin
q:=pp;
pp:=q^.sled;
dispose(q); {компилятор выдаёт ERROR 204}
pp:=pp^.sled;
D:=D+1;
end;

end;
END;

procedure vivod(var dr:next); {вывод отредактированного списка в файл RES.OUT}
var dt:next;
Begin
writeln('=======REZULTAT=======');
dt:=dr;
While dt<>NIL do
Begin
Writeln(dt^.el);
dt:=dt^.sled;
End;
close(output);
end;

BEGIN
clrscr;
Writeln('Введите номер начальной и конечной строки');
readln(N,K);
VVOD(Uk1);
Cleaning(Uk1);
vivod(Uk1);
END.



Сообщение отредактировано: Тёмный Эльф -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 27.10.2021 8:19
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name