|
Главная | Правила | Регистрация | Дневники | Справка | Пользователи | Календарь | Поиск | Сообщения за день | Все разделы прочитаны |
|
Опции темы | Опции просмотра |
03.05.2014, 17:29 | #1 (permalink) |
Новичок
Регистрация: 03.05.2014
Сообщений: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Помогите исправить код. Pascal
{Ввести последовательность натуральных чисел. Если последовательность упорядочена по невозрастанию или по неубыванию, удалить из последовательности числа, в которые входят цифры 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. |
03.05.2014, 17:29 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Имеет смысл прочитать данное ниже Помогите исправить, пожалуйста Помогите исправить ошибку, пожалуйста |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
Метки |
pascal abc, односвязные списки, паскаль, помогите, ^.next |
Опции темы | |
Опции просмотра | |
|
|