Каталог статей
Работа со списками на Паскале (Pascal)
Задание: Имеется файл. Содержимое файла поместить в список в
обратном
порядке.
Пример:
содержимое файла: 123456789
полученный список: 987654321
Исходный код: Program spiski; uses crt; Type TElement=^element; Element=record a:char; next:TElement; End;
var
Q,last,head:TElement; m,j,c:integer;
Procedure add(var
last:TElement; k:char); var Q:TElement; Begin new(Q);
Q^.a:=k; Q^.next:=nil; last^.next:=Q; Last:=Q; End;
{proverka
nali4iya faila}
procedure proverka(filename:string); var
f:text; Begin {$I-} Assign(f,filename); reset(f); {$I+}
if ioresult<>0 then Begin textcolor(204); writeln('ERROR
FILE!!!'); readln; halt; End; End;
{vivod faila na ekran}
procedure
printfile(filename:string); var f:text; a:string; Begin Assign(f,filename); reset(f); while
not eof(f) do Begin readln(f,a); textcolor(12);
writeln(a); End; close(f); End;
{====sozdanie
spiska====}
procedure createhead(var head,last:TElement); Begin new(head); head^.next:=nil; last:=head; End;
{====vivod
na ekran spiska====}
procedure print(head:TElement); var
Q:TElement; l:integer; Begin new(q); Q:=head^.next; while
Q<>nil do Begin write(Q^.a,'-->');
Q:=Q^.next; End; writeln; End;
{====vipoln9Iet...====}
procedure
poisk(filename:string;head:TElement); var Q,O,p:TElement; F:file of
char; b:char; i:integer; Begin new(Q); Assign(f,filename); reset(f); Q:=head^.next; for
i:=filesize(f)-1 downto 0 do begin seek(f,i);
read(f,b); add(last,b); end; writeln; close(f); End;
BEGIN clrscr; writeln('1
------HA4AJlO---------'); proverka('c:\myfile.txt'); writeln('2
-----------Fail imeetsya--------'); printfile('c:\myfile.txt'); writeln('3
-------------sozdanie spiska------'); createhead(head,last); writeln('4
------------vipolnenie-------'); poisk('c:\myfile.txt',head); writeln('5
-----------vivod spiska-------'); print(head);
writeln;
readln; END.
|
Категория: Pascal | Добавил: _Hz_ (28.02.2010)
|
Просмотров: 593
| Рейтинг: 0.0/0 |
Добавлять комментарии могут только зарегистрированные пользователи.
[
Регистрация |
Вход ]