Вычислите сумму тех элементов списка, значения которых меньше значений всех элементов, непосредственно следующих за ним.
Код
program un_list;
{$APPTYPE CONSOLE}
uses
SysUtils,
Windows;
type
TElem = byte;
TList = ^Zveno;
Zveno = record
inf : Telem;
next : TList;
end;
var
list: TList;
procedure initList (var A : TList);
begin
A:=nil;
end;
procedure V_konev (var A : TList; el : TElem);
var
tmp : TList;
p : TList;
begin
new(tmp);
tmp^.inf:=el;
tmp^.next:=nil;
if A=nil then A:=tmp
else
begin
p:=A;
while p^.next<>nil do
p:=p^.next;
p^.next:=tmp;
end;
end;
procedure Input(var A : TList);
var
tmp : TElem;
begin
write('Вводи элементы: ');
initList(A);
while not eoln do
begin
read(tmp);
V_konev(A, tmp);
end;
readln;
end;
procedure clearList (var A : TList);
var
temp : TList;
begin
while A<>nil do
begin
temp:=A;
A:=A^.next;
dispose(temp);
end;
end;
function obrab(A:Tlist) : integer; {неверная функция обработки}
begin
result := 0;
if a <> nil then
while a^.next <> nil do
begin
if a^.inf < a^.next^.inf then result := result + a^.inf;
a := a^.next;
end;
end;
begin
setConsoleCP(1251);
setConsoleOutputCP(1251);
Input(list);
writeln('Сумма требуемых эл-ов : ',obrab(list));
clearList(list);
readln;
end.
{$APPTYPE CONSOLE}
uses
SysUtils,
Windows;
type
TElem = byte;
TList = ^Zveno;
Zveno = record
inf : Telem;
next : TList;
end;
var
list: TList;
procedure initList (var A : TList);
begin
A:=nil;
end;
procedure V_konev (var A : TList; el : TElem);
var
tmp : TList;
p : TList;
begin
new(tmp);
tmp^.inf:=el;
tmp^.next:=nil;
if A=nil then A:=tmp
else
begin
p:=A;
while p^.next<>nil do
p:=p^.next;
p^.next:=tmp;
end;
end;
procedure Input(var A : TList);
var
tmp : TElem;
begin
write('Вводи элементы: ');
initList(A);
while not eoln do
begin
read(tmp);
V_konev(A, tmp);
end;
readln;
end;
procedure clearList (var A : TList);
var
temp : TList;
begin
while A<>nil do
begin
temp:=A;
A:=A^.next;
dispose(temp);
end;
end;
function obrab(A:Tlist) : integer; {неверная функция обработки}
begin
result := 0;
if a <> nil then
while a^.next <> nil do
begin
if a^.inf < a^.next^.inf then result := result + a^.inf;
a := a^.next;
end;
end;
begin
setConsoleCP(1251);
setConsoleOutputCP(1251);
Input(list);
writeln('Сумма требуемых эл-ов : ',obrab(list));
clearList(list);
readln;
end.