Программа
PROGRAM Sum(input,output);
TYPE RefType=^Point; { Тип - ссылка }
Point=record { Тип - элемент }
N:real;
Next:RefType
end;
VAR L:RefType; { Список }
PROCEDURE InputList(var L:RefType); { Процедура ввода списка }
Begin
if not EOF { Проверка достижения конца файла }
then begin
New(L); { Создание новой переменной }
ReadLn(L^.N); { Ввод числа }
InputList(L^.Next) { Ввод оставшейся части списка }
end
else L:=nil { Звершение списка }
End;
FUNCTION CorrectlyList(L:RefType):boolean;
{ Функция проверки корректности списка }
Begin
if L<>nil { Если список не пустой }
then CorrectlyList:=L^.Next<>nil
{ то - определение его корретности по наличию второго элемента }
else CorrectlyList:=FALSE { иначе - список некорректен }
End;
FUNCTION GetSum(L:RefType):real; { Функция вычисления суммы последних элементов }
Begin
while L^.Next^.Next<>nil do L:=L^.Next; { Продвижение до предпоследнего элемента }
GetSum:=L^.N+L^.Next^.N { Определение суммы }
End;
PROCEDURE DisposerList(var L:RefType); { Процедура удаления списка }
Begin
if L<>nil then begin { Если переменная существует, то }
DisposerList(L^.NEXT); { удаление хвоста списка }
Dispose(L); { удаление переменной }
L:=nil { Переопределение ссылки }
end
End;
BEGIN
WriteLn; { Пропуск строки }
{ Вывод подсказки: }
WriteLn('Введите список чисел');
WriteLn('разделитель чисел - [Enter]');
WriteLn('конец списка - [Ctrl]+[Z] ');
InputList(L); { Ввод списка }
if CorrectlyList(L) { Проверка корректности списка }
then Begin
WriteLn('Сумма последнего и предпоследнего элементов ',GetSum(L):10:5);
{ Вывод суммы последних элементов }
DisposerList(L) { Уничтожение списка }
end
else WriteLn('Введенный список содержит менее 2-х элементов')
END.
Бесплатные примеры программ
Примеры написанных программ
Помощь студентам по программированию