Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 03.03.2010, 21:58
Nostalgia Nostalgia вне форума
Прохожий
 
Регистрация: 29.12.2008
Сообщения: 15
Репутация: 10
По умолчанию Помогите пожалуйста доработать программу. Как сделать чтобы в Мемо выводился стэк из

Помогите пожалуйста доработать программу. Как сделать чтобы в Мемо выводился стэк из 5 строк и длиной 10 символов ?
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Unit2;
type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
 
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
  S:TStack;
 
 
implementation
 
{$R *.dfm}
 
procedure TForm1.FormCreate(Sender: TObject);
begin
  S:=TStack.Create;
end;
 
 
procedure TForm1.Button1Click(Sender: TObject);
begin
 
memo1.Lines.Add(pansichar(S));
end;
 
end.
 
 
unit Unit2;
 
interface
uses SysUtils, Dialogs;
const StackEmpty=nil;
type
  T=integer;
  TStackEl=^StackEl;
  StackEl=record
  el:T;
  prev:TStackEl;
end;
TStack=class
private
  StackTop:TStackEl;
public
  Constructor Create;
  Function EmptyStack:boolean;
  procedure AddToStack(elem:T);
  procedure DelFromStack;
  function LastOfStack:T;
end;
 
 
implementation
 
Constructor TStack.Create;
begin
  Inherited Create;
end;
 
Function TStack.EmptyStack;
begin
  EmptyStack:=StackTop=StackEmpty;
end;
 
procedure TStack.AddToStack;
var
  tmp:TStackEl;
begin
  new(tmp);
  tmp^.el:=elem;
  tmp^.prev:=StackTop;
  StackTop:=tmp;
end;
 
procedure TStack.DelFromStack;
var
  help:TStackEl;
begin
  if StackTop<>StackEmpty then
  begin
    help:=StackTop;
    StackTop:=StackTop^.prev;
    dispose(help);
  end
  else
  showmessage ('error stack pust');
end;
 
function TStack.LastOfStack;
begin
  if StackTop<>StackEmpty then
  result:=StackTop^.el
  else showmessage('error1 stack pust');
end;
 
end.

Последний раз редактировалось Nostalgia, 03.03.2010 в 22:28.
Ответить с цитированием
  #2  
Старый 04.03.2010, 01:01
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,097
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

вообще, примерно так:
Код:
1
2
3
4
5
6
7
8
9
10
11
var
  P  : TStackEl;
begin
  memo1.lines.clear;
  P := S.StackTop;
  while P <> Nil do
    begin
       memo1.lines.add(P.el);
       P := P.prev;
    end;
end;

ЗЫ. Использовал твое описание.
Ответить с цитированием
  #3  
Старый 04.03.2010, 01:01
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

И что это за строки и откуда они возмутся?
Ваша структура StackEl явно этих строк не содержит. Или вы хотите вывести строковое представление el ?
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #4  
Старый 05.03.2010, 19:33
Nostalgia Nostalgia вне форума
Прохожий
 
Регистрация: 29.12.2008
Сообщения: 15
Репутация: 10
По умолчанию

всё исправила. в мемо не выводятся строки(( почему ? подскажите пожалуйста
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
<div style="margin:20px; margin-top:5px; ">
    <div class="smallfont" style="margin-bottom:2px">Цитата:</div>
    <table cellpadding="6" cellspacing="0" border="0" width="100%">
    <tbody><tr>
        <td class="alt2" style="border:1px inset">
             
                <div>Сообщение от <strong>lmikle</strong></div>
                <div style="font-style:italic">вообще, примерно так:
<div style="margin:20px; margin-top:5px">
    <div class="smallfont" style="margin-bottom:2px">Код:</div>
    <div style="border: 1px solid #DADADA; background-color: #fff; font-size: 12px; margin-bottom: 10px; margin-top: 10px;"><pre class="brush: delphi; toolbar: false;" style="margin:0px; padding:6px; border:1px inset; width:640px; height:194px; overflow:auto">var
  P  : TStackEl;
begin
  memo1.lines.clear;
  P := S.StackTop;
  while P <> Nil do
    begin
       memo1.lines.add(P.el);
       P := P.prev;
    end;
end;</pre></div>
</div>
 
ЗЫ. Использовал твое описание.</div>
             
        </td>
    </tr>
    </tbody></table>
</div>
 
 
 
<div style="margin:20px; margin-top:5px; ">
    <div class="smallfont" style="margin-bottom:2px">Цитата:</div>
    <table cellpadding="6" cellspacing="0" border="0" width="100%">
    <tbody><tr>
        <td class="alt2" style="border:1px inset">
             
                unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Unit2;
 
type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
  MySTack:TStack;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.FormCreate(Sender: TObject);
begin
  MyStack:=TStack.Create;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
var
  P  : TStackEl;
begin
  memo1.lines.clear;
  P := MyStack.StackTop;
  while P <> Nil do
    begin
       memo1.lines.add(P.el);
       P := P.prev;
    end;
end;
 
 
end.
 
 
unit Unit2;
 
interface
uses SysUtils, Dialogs;
const
  StackEmpty=nil;
type
  T=string[10];
  TStackEl=^StackEl;
  StackEl=record
  el:T;
  prev:TStackEl;
end;
 
TStack=class
public
   StackTop:TStackEl;
  Constructor Create; //конструктор
  function EmptyStack:boolean; // проверка, не пустой ли стэк
  procedure AddToStack(elem:T);
  procedure DelFromStack;
  function LastOfStack:T;
end;
 
implementation
Constructor TStack.Create;
begin
  Inherited Create;
end;
 
function TStack.EmptyStack;
begin
  EmptyStack:=StackTop=StackEmpty;
end;
 
procedure TStack.AddToStack;
var
  tmp:TStackel;
begin
  new(tmp);
  tmp^.el:=elem;
  tmp^.prev:=StackTop;
  StackTop:=tmp;
end;
 
procedure TStack.DelFromStack;
var
  help:TStackEl;
begin
  if StackTop<>StackEmpty then
  begin
    help:=StackTop;
    Stacktop:=StackTop^.prev;
    dispose(help);
  end
  else
  showmessage('error stack pust');
end;
 
function TSTack.LastOfStack;
begin
  if StackTop<>StackEmpty then
  result:=STackTop^.el
  else showmessage('error1 stack pust');
end;
 
 
end.
  
             
        </td>
    </tr>
    </tbody></table>
</div>
Цитата:

Последний раз редактировалось Nostalgia, 05.03.2010 в 19:37.
Ответить с цитированием
  #5  
Старый 05.03.2010, 20:40
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,097
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Гы! А что ты исправила-то?
Ответить с цитированием
  #6  
Старый 05.03.2010, 20:50
Nostalgia Nostalgia вне форума
Прохожий
 
Регистрация: 29.12.2008
Сообщения: 15
Репутация: 10
По умолчанию

Цитата:
Сообщение от lmikle
Гы! А что ты исправила-то?
то что ты написал !!!
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 23:22.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025