Программа


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.

Бесплатные примеры программ
Примеры написанных программ
Помощь студентам по программированию