Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 03.09.2015, 17:28   #1 (permalink)
Asya_inter
Member
 
Аватар для Asya_inter
 
Регистрация: 12.01.2015
Сообщений: 71
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Организация стека через динамическую структуру

Помогите пожалуйста, найти ошибки. Дан текстовый файл, в котором записаны строки, размер которых не превышает [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.
Asya_inter вне форума   Ответить с цитированием

Старый 03.09.2015, 17:28
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Безусловно схожие по содержанию темы вам должны чем то быть полезны

Организация Wi-Fi
Организация интернета
Организация ветвления
Разработать алгоритм удаления из стека
С# Организация циклов

Старый 03.09.2015, 19:30   #2 (permalink)
Asya_inter
Member
 
Аватар для Asya_inter
 
Регистрация: 12.01.2015
Сообщений: 71
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Уже всё получилось! Вот как должно быть:
Код:
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.
Asya_inter вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 13:55.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.