Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ ЛОС[Линейный Однонаправленный Список]

Автор: D1ma 21.03.2009 23:32

Помогите исправить ошибки, пожалуйста smile.gif
Задача:Cоставить ЛОС. Вывести максимальное значение нечетной компоненты(позиции)

Код
Program Laba;
uses crt;
type
     link=^rs;
     rs=record
     val:word;
     lnk:link;
end;
var
a,b:link;
i:word;

Procedure p1(var a:link);
var b:link;
i:integer;
begin
a:=nil;
i:=1;
while i<>-1 do begin
readln(i);
new(b);
b^.val:=i;
b^.lnk:=a;
a:=b;
end;end;

Procedure p2(a:link);
var
i:integer;
n:integer;
begin
i:=0;
n:=0;
while a<>nil do begin
n:=n+1;
if (A^.val>i) and (n mod 2<>0) then i:=A^.val;
A:=A^.lnk;
end;
end;

begin
clrscr;
readln(i);
p1(b);
p2(a);
write(i);
end.

Автор: amega 21.03.2009 23:53

Цитата
Помогите исправить ошибки, пожалуйста

хоть для начаала напиши какаия ошибка...

Автор: D1ma 22.03.2009 0:26

Выводит число, которое вводится первым wink.gif

Автор: volvo 22.03.2009 0:38

Естественно. А ты ждал другого поведения? У тебя описаны 2 переменных с одинаковыми именами: Глобальная и локальная (внутри процедуры). Так вот внутри процедуры все действия будут производиться именно с локальной переменной, которая потом уничтожится. В итоге в i останется первое введенное значение (кстати, зачем ты его вводил, я так и не понял).

Программу проще переписать полностью, чем исправить. Что-то ты здесь сильно накрутил, запутал все, что только можно запутать...