Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.09.2015, 17:57   #1
Asya7
Пользователь
 
Аватар для Asya7
 
Регистрация: 30.11.2014
Сообщений: 65
По умолчанию Реализация стека через динамическую структуру

Помогите пожалуйста, найти ошибки. Дан текстовый файл, в котором записаны строки, размер которых не превышает [80]. Нужно, используя стек переписать строки в обратом порядке ( не символы, а именно строки). Осуществить стек на основе динамической структуры - списка.(Задачу выполняю на PascalABC.NET)
Код:
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; 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;
   while not Ise(s) do 
   begin
      pop(s, d);
      writeln(d);
   end;
end.
Asya7 вне форума Ответить с цитированием
Старый 03.09.2015, 18:32   #2
Asya7
Пользователь
 
Аватар для Asya7
 
Регистрация: 30.11.2014
Сообщений: 65
По умолчанию

Уже всё разрешилось! Вот правильный код:
Код:
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.
Asya7 вне форума Ответить с цитированием
Старый 03.09.2015, 19:38   #3
GreenWizard
мальчик-помогай =)
Форумчанин
 
Регистрация: 16.09.2010
Сообщений: 522
По умолчанию

пара замечаний:
1) push
2) IsE => isEnd
3) stek => Stack => PStack или TStack, смотря какая у тебя вера))
мелочи, но лучше учиться сразу писать норм)

Последний раз редактировалось GreenWizard; 03.09.2015 в 19:40.
GreenWizard вне форума Ответить с цитированием
Старый 03.09.2015, 20:58   #4
Asya7
Пользователь
 
Аватар для Asya7
 
Регистрация: 30.11.2014
Сообщений: 65
По умолчанию

Спасибо за исправления! В дальнейшем буду учитывать.
Asya7 вне форума Ответить с цитированием
Старый 03.09.2015, 21:34   #5
GreenWizard
мальчик-помогай =)
Форумчанин
 
Регистрация: 16.09.2010
Сообщений: 522
По умолчанию

Цитата:
Сообщение от Asya7 Посмотреть сообщение
Спасибо за исправления! В дальнейшем буду учитывать.
Просто, понимаешь, это сейчас твои проги и сотни строк не занимают, да и логика проста, а вот начнёшь писать серьёзное и крупное - все эти мелочи будут очень ощутимо мешать..... думаю, что ты и сама видела много рекомендаций по написанию кода, но на мелких проектах от них толку мало, одни сложности в неумелых руках, поэтому ими и пренебрегают студенты
GreenWizard вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
реализация стека через односвязный список snusnu Общие вопросы C/C++ 7 06.04.2014 23:59
реализация стека через массив el_gato_de_Ch Общие вопросы C/C++ 4 21.05.2013 22:40
Реализация стека через массив Quadrelle Паскаль, Turbo Pascal, PascalABC.NET 1 23.04.2013 07:55
[с] Динамическую структуру оформить в виде отдельного модуля. nicklifs Общие вопросы C/C++ 5 15.03.2012 11:25
Нужно прочитать из файла txt в динамическую структуру dimalem Общие вопросы C/C++ 0 18.04.2010 15:16