Помощь - Поиск - Пользователи - Календарь
Полная версия: ЛОС[Линейный Однонаправленный Список]
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
D1ma
Помогите исправить ошибки, пожалуйста 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
Цитата
Помогите исправить ошибки, пожалуйста

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

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