Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Паскаль. Восстановить стек, содержащий строки, из текстового файла.

Влад Демянков Ученик (56), на голосовании 10 лет назад
Дополнен 10 лет назад
Этот код являеться решением?

type
List=^TList; {Указатель на элемент типа TList}
TList=record {А это наименование нашего типа "запись" обычно динамические структуры описываются через запись}
data:integer; {данные, хранимые в элементе}
next:List; {указатель на следующий элемент}
end;
procedure ReadFile(var f:text;var stek1:List);{Процедура чтения файла в стек}
var
tmp:List;
x:integer;
begin
while not eof(f) do
begin
new(tmp); {выделяем в памяти место для нового элемента}
tmp^.next:=stek1; {указатель на следующий элемент "направляем" на вершину стека}
read(f,x);
tmp^.data:=x; {добавляем к элементу данные}
stek1:=tmp; {вершина стека изменилась, надо перенести и указатели на неё}
end;
end;
procedure WriteFile(var f:text;stek1:List); {Процедура вывода стека в файл}
var x:real;
begin
while stek1<>nil do {пока указатель stek1 не станет указывать в пустоту}
begin {а это произойдёт как только он перейдёт по ссылке последнего элемента}
x:=stek1^.data;
Writeln(f,x); {выводить данне}
stek1:=stek1^.next {и переносить указатель вглубь по стеку}
end;
end;
Procedure FreeStek(stek1:List); {Процедура освобождения памяти занятой стеком}
var
tmp:List;
begin
while stek1<>nil do {пока stek1 не станет указывать в "пустоту" делать}
begin
tmp:=stek1; {указатель tmp направим на вершину стека}
stek1:=stek1^.next; {вершину стека перенесём на следующий за данной вершиной элемент}
dispose(tmp); {освободим память занятую под старую вершину}
end;
end;
var f,g:text; L:List;
begin
assign(f,'C:\Documents and Settings\Admin\Рабочий стол\i.txt');
reset(f);
assign(g,'C:\Documents and Settings\Admin\Рабочий стол\u.txt');
rewrite(g);
ReadFile(f,L);
WriteFile(g,L);
FreeStek(L);
close(f);
close(g);
end.
Голосование за лучший ответ
Άηϑρέΰ ҂ Искусственный Интеллект (179801) 10 лет назад
стек, строки, файл - такие разные вещи.. . пиши подробно!
Алексей Кузьминов Мудрец (11132) 10 лет назад
Эта программа читает последовательность целых чисел из файла i.txt и выводит их в обратном порядке в файл u.txt, используя список целых чисел.
О стеке в программе напоминает только название переменной.

Стек - это хранилище данных, обладающее следующими особенностями:
1. Процедура Push - положить на стек - просто добавляет элемент
2. Функция Peek - посмотреть на последний добавленный процедурой Push элемент
3. Функция Pop - убрать последний добавленный процедурой Push элемент таким образом, чтобы функция Peek возвращала предыдущий добавленный элемент, убранный элемент вернуть как результат
4. Функция IsEmpty - признак, что данных в стеке нет

Если от вас требуется реализовать инверсию файла из целых чисел, то от вас требуют реализовать эти функции, а потом с их помощью организовать последовательное помещение данных из файла на стек, а затем извлечение до полного опустошения с выводом в файл.
Замечание: функцию Peek для решения вашей задачи реализовывать не потребуется.
Похожие вопросы