Помогите исправить код. 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. |
Часовой пояс GMT +4, время: 08:20. |
Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.