• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Организация стека через динамическую структуру

Asya_inter

Новые
Регистрация
12 Янв 2015
Сообщения
71
Реакции
0
Баллы
0
Организация стека через динамическую структуру

Помогите пожалуйста, найти ошибки. Дан текстовый файл, в котором записаны строки, размер которых не превышает [80]. Нужно, используя стек переписать строки в обратом порядке ( не символы, а именно строки). Осуществить стек на основе динамической структуры - списка.
Код:
program g;

type
   tData = string[80];
   tHtd = ^Htd;
   Htd = record
      data: tData;
      next: tHtd;
   end;
   stek = tHtd;

var
   d: tData;
   s: stek;
   f1,f2:text;

procedure puch(var s: stek; d: tData);
var
   p: stek;
begin
   new(p);
   p^.data := d;
   p^.next := nil;
   s := p;
end;
 
 
procedure pop(var s: stek; d: tData);
var
   p: stek;
begin
   d := s^.data;
   writeln(f2,d);
   p := s;
   s := s^.next;
   dispose(p);
end;
 
begin
   Assign(f1, 'словарь.txt');
   Reset(f1);
   assign(f2,'g.txt');
   Rewrite(f2);
   while eof(f1) do
      readln(f1, d);
   puch(s, d);
   while s<>nil do
   pop(s,d);
end.
 
Уже всё получилось! Вот как должно быть:
Код:
program g;

type
   tData = string[80];
   tHtd = ^Htd;
   Htd = record
      data: tData;
      next: tHtd;
   end;
   stek = tHtd;

var
   d: tData;
   s: stek;
   f1, f2: text;

procedure Init(var s: stek);
begin
   s := nil;
end;

function IsE(s: stek): Boolean;
begin
   Result := s <> nil;
end;

procedure puch(var s: stek; d: tData);
var
   p: stek;
begin
   new(p);
   p^.data := d;
   p^.next := s;
   s := p;
end;


procedure pop(var s: stek; var d: tData);
var
   p: stek;
begin
   d := s^.data;
   p := s;
   s := s^.next;
   dispose(p);
end;

begin
   Assign(f1, 'словарь.txt');
   Reset(f1);
   assign(f2, 'g.txt');
   Rewrite(f2);
   Init(s);
   while not eof(f1) do 
   begin
      readln(f1, d);
      puch(s, d);
   end;
   close(f1);
   while Ise(s) do 
   begin
      pop(s, d);
      writeln(f2,d);
   end; 
   close(f2);
end.
 
Назад
Сверху