• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Помогите исправить код. Pascal

  • Автор темы Автор темы drawww
  • Дата начала Дата начала

drawww

Ученик
Регистрация
3 Май 2014
Сообщения
1
Реакции
0
Баллы
0
Помогите исправить код. Pascal

Помогите исправить код!!:dog::


{Ввести последовательность натуральных чисел.
Если последовательность упорядочена по невозрастанию или по неубыванию,
удалить из последовательности числа, в которые входят цифры 2 и 8 (одновременно),
и продублировать числа, заканчивающиеся цифрой 5.
В противном случае упорядочить последовательность по неубыванию.
Последовательность хранить в односвязном списке.
Перед завершением программы очистить динамическую память с помощью процедуры Dispose.}

Type List=^Elem;
Elem=Record
Data:integer;
Next:List;
End;
Procedure VVod (head:List);
Var P,P1:List;
Input:Text;
Begin

Assign (input,'input.txt');

Reset (input);
New(head);
head^.next:=Nil;
While not SeeKeOf(input) do begin
New(P);
Read (input,P^.data);
If head=Nil then head:=P
else P1:=P^.next;
P1:=P;
close(input);
End;
end;
Function Proverka_1(head:list): Boolean;
Var p:list;
begin
proverka_1:=true;
p:=head^.next;
while p^.next<>head
do begin
if p^.data>p^.next^.data then begin
proverka_1:=false;
exit;
end
else p:=p^.next;
end;
end;
Function Proverka_2(head:list): Boolean;
Var p:list;
begin
proverka_2:=true;
p:=head^.next;
while p^.next<>head
do begin
if p^.data<p^.next^.data then begin
proverka_2:=false;
exit;
end
else p:=p^.next;
end;
end;
Function magic2(x:integer):boolean;
Var k:integer;
begin
magic2:=false;
While x>0 do begin
k:=x mod 10;
If k=2 then
magic2:=true;
x:=x div 10;
end;
end;
Function magic8(x:integer):boolean;
Var k:integer;
begin
magic8:=false;
While x>0 do begin
k:=x mod 10;
If k=8 then
magic8:=true;
x:=x div 10;
end;
end;
Procedure Del (var head:List);
Var P,P1:List;
Begin
While (head<>Nil) and ((magic2(head^.data)=true) or (magic8(head^.data)=true)) do begin
P:=head;
head:=head^.next;
dispose(p);
end;
P:=head;
While p^.next<> Nil do
If (magic2(p^.next^.data)=true) or (magic8(p^.next^.data)=true) then begin
p1:=p^.next;
p^.next:=p^.next^.next;
Dispose(P1);
end
Else p:=p^.next;
end;
Procedure Dubl (var head:List);
Var p,p1:List;
begin
p:=head;
While p<>Nil do begin
If p^.data mod 10=5 then begin
New(p1);
p1^.data:=p^.data;
p1^.next:=p^.next;
p^.next:=p1;
p:=p1^.next;
end;
end;
end;
Procedure Sort(var head:List);
Var p,p1:List;
x:integer;
begin
p:=head;
While p^.next<>Nil do begin
p1:=p^.next;
While p1<>Nil do begin
If p^.data>p1^.data then begin
x:=p^.data;
p^.data:=p1^.data;
p1^.data:=x;
end;
p1:=p1^.next;
end;
p:=p^.next;
end;
end;
Procedure DISP(var head:List);
var P,P1:List;
Begin
P:=head;
While p<>Nil do begin
p1:=p;
p:=p1^.next;
Dispose(p1);
end;
End;
Procedure Vivod(var head:list);
Var P:list;output:text;
begin
assign(output,'output.txt');
rewrite(output);
p:=head^.next;
While P<>head do begin
Write (output, P^.data, ' ');
P:=P^.next;
end;

close(output);
end;
VAR
zyu:List;
BEGIN
Vvod(zyu);
if (proverka_1(zyu)=true)or (proverka_2(zyu)=true) then begin
dubl(zyu);
del(zyu);
end
else sort(zyu);
Vivod(zyu);
Disp(zyu);
END.
 
Назад
Сверху