Построить динамический список и переписать в него указанную последовательность

В текстовом файле содержится последовательность действительных чисел. Построить динамический список и переписать в него указанную последовательность. В полученном списке поменять на противоположные знаки чисел, по абсолютной величине превышающих 1. Измененную последовательность из списка переписать в результирующий файл. Имена исходного и результирующего файлов вводятся с клавиатуры.

code: #pascal
  1. uses crt;
  2. type element = record
  3.         data:integer;
  4.         next:pointer;
  5.         end;
  6. var
  7. curr,head:^element;
  8. t:integer;
  9. f:text;
  10. s:string;
  11.  
  12. begin
  13. head:=nil;
  14. clrscr;
  15. Write('Введите имя исходного файла: ');
  16. readln(s);
  17. assign(f,s);
  18. reset(f);
  19. while not(eof(f)) do
  20.  begin
  21.  new(curr);
  22.  read(f,t);
  23.  curr^.data:=t;
  24.  curr^.next:=head;
  25.  head:=curr;
  26.  end;
  27. close(f);
  28.  
  29. curr:=head;
  30. Write('Введите имя результирующего файла: ');
  31. readln(s);
  32. assign(f,s);
  33. rewrite(f);
  34.  
  35. while curr<>nil do
  36.  begin
  37.  if abs(curr^.data)>1 then curr^.data:=-curr^.data;
  38.  writeln(curr^.data);
  39.  write(f,curr^.data,' ');
  40.  curr:=curr^.next;
  41.  end;
  42. close(f);
  43.  
  44. {отчистка памяти}
  45. if head<>nil then
  46.  begin
  47.  curr:=head;
  48.  curr:=curr^.next;
  49.  while curr<>nil do
  50.   begin
  51.   head^.next:=curr^.next;
  52.   dispose(curr);
  53.   curr:=head^.next;
  54.   end;
  55.  dispose(head);
  56.  end;
  57. readln;
  58. end.
Поделиться:

Похожие статьи: