![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблемы со стеком
Vremenniy © (2007-02-08 16:59:00)Здравствуйте, программисты, я понимаю, что этот форум для начинающих, и тут помогают писать программы, а не пишут, но мне просто больше некуда обратиться, не поможите ли вы мне, точнее не напишите ли вы мне, точнее не мне , а моей девушке, которая в институте на первом курсе учится, но вообще в программирование не соображает, программку простенькую, просто я сам со школы уже ничего не помню, а уже (по глупости) пообещал ей помочь.
Чтобы вводили элементы стека, а при нажатии на кнопку стек инвертировался, т.е. "дно" стека сделать вершиной, а вершину - "дном".
Уж пожалуйста помогите, я думал вспомню, там же ведь еще на Delphi нужно.
Заранее благодарен!
RASkov (2007-02-08 23:04:00) [1]> В этой ветке под термином «стек» подразумевается абстрактный
> тип данных «стек».
Ну я считаю, нужно услышать от автора вопроса, более конкретные определения его стека...
Anatoly Podgoretsky (2007-02-08 22:24:00) [2]> Джо (08.02.2007 22:17:24) [24]
А стандартный стек, не имеет понятия дно или количество элементов, это уже не совсем стандартный стек.
Джо (2007-02-08 22:17:00) [3]> [23] RASkov (08.02.07 21:45)
> Если, чесно, я так и не въехал, что в этой ветке подразумевается
> под термином "стек"...
В этой ветке под термином «стек» подразумевается абстрактный тип данных «стек».
RASkov (2007-02-08 21:45:00) [4]> » Джо:
> » «То же самое» с массивами не сделаешь. Да и к стеку это
> имеет весьма отдаленное отношение.
> [18] DiamondShark © (08.02.07 19:37)
Если, чесно, я так и не въехал, что в этой ветке подразумевается под термином "стек"...
> [19] Vremenniy © (08.02.07 19:40)
Да, но как видимо я не правильно понял вопрос... Что такое в твоем вопросе - стек?
И всеж я думаю, что здесь всетаки не TObjectStack имеется в виду...
DiamondShark (2007-02-08 19:48:00) [5]
> Vremenniy © (08.02.07 19:43) [20]
> DiamondShark
> объясни вкратце, как он работает, если не сложно
Не сложно.
Перекладываем исходный стек в один, потом в другой, потом обратно.
Джо (2007-02-08 19:46:00) [6]> [20] Vremenniy © (08.02.07 19:43)
> DiamondShark
> объясни вкратце, как он работает, если не сложно
У стека есть две операции: push (поместить значение на вершину стека) и pop («снять» значение с вершины стека). Вот ими и нужно оперировать. И «эмулировать» при их помощи другие операции.
Vremenniy (2007-02-08 19:43:00) [7]DiamondShark
объясни вкратце, как он работает, если не сложно
Vremenniy (2007-02-08 19:40:00) [8]RASkov
на форме нужно я так понимаю разместить TEdit? и кнопку простую? спасибо большое за код, выручил!
DiamondShark (2007-02-08 19:37:00) [9]
> RASkov (08.02.07 19:34) [16]
Не грузи, да не грузим будешь.
DiamondShark (2007-02-08 19:37:00) [10]самый тупой алгоритм (псевдокод):
procedure CopyStack(Src, Dst: Stact);
begin
while not Src.Empty do
Dst.Push(Src.Pop);
end;
procedure InvertStack(S: Stact);
var
TempStack1, TempStack2: Stack;
begin
CopyStack(S, TempStack1);
CopyStack(TempStack1, TempStack2);
CopyStack(TempStack2, S);
end;
для сельской местности сойдёт.
конкретная реализация + интерфейс -- за тобой.
чья, в конце концов, девушка?
RASkov (2007-02-08 19:34:00) [11]> [15] Vremenniy © (08.02.07 19:08)
Что такое "стек"?
function InvertStek(const S: String): String;
var N: Integer;
begin
Result:='';
for N:= 1 to Length(S) do Result:=S[N]+Result;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(InvertStek(edit1.Text));
end;
Тоже самое можно и с массивами сделать... » Джо: » «То же самое» с массивами не сделаешь. Да и к стеку это имеет весьма отдаленное отношение.
Vremenniy (2007-02-08 19:08:00) [12]Это же не трудно вам, эт первый курс
Чтобы вводили элементы стека, а при нажатии на кнопку, стек инвертировался, т.е. "дно" стека сделать вершиной, а вершину - "дном".
Virgo_Style (2007-02-08 19:05:00) [13]Ты вопрос задай, глядишь и поможем
Vremenniy (2007-02-08 18:57:00) [14]Блин, ну вы программисты и народ, нельзя было сразу сказать что не будем помогать, зачем же угарать-то надо мной
Virgo_Style (2007-02-08 18:44:00) [15]Vremenniy © (08.02.07 16:59)
Здравствуйте, программисты, я понимаю, что этот форум для начинающих, и тут помогают писать программы, а не пишут, но мне просто больше некуда обратиться, не поможите ли вы мне, точнее не напишите ли вы мне, точнее не мне , а моей девушке, которая в институте на первом курсе учится, но вообще в программирование не соображает, программку простенькую, просто я сам со школы уже ничего не помню, а уже (по глупости) пообещал ей помочь.
Аж мотороллер вспомнился
Vremenniy (2007-02-08 18:10:00) [16]Ну подскажите, хотя бы где материал взять
Vremenniy (2007-02-08 17:37:00) [17]в ней нужно в стеке поменять местами 1 и последний элементы, можно ее под мое задание переделать или нет?
Vremenniy (2007-02-08 17:35:00) [18]Вот на паскале нашел, но там немного другое задание, еще в школе делал
Program LabWork_1_Stack;
const
max_st=1000;
var
st,_st: array[1..max_st] of char;
n,i:integer;
b,first,last:char;
function empty:integer; {Проверка стека на наличие элементов в нем}
begin
if n=0 then empty:=0;
end;
procedure push(a:char); {Поместить элемент в стек}
begin
inc(n);
st[n]:=a;
end;
procedure pop(var a:char); {Извлечь элемент из стека}
begin
a:=st[n];
dec(n);
end;
function full:boolean; {Проверка на переполнение}
begin
Full:=n=max_st
end;
procedure stacktop(var n:integer); {Узнать верхний элемент}
begin
b:=st[n];
end;
Begin {Основная программа}
n:=1;
while 1<>0 do
begin
readln(st[n]);
if st[n]='=' then break;
inc(n);
end;
dec(n);
for i:=1 to n do
begin
write(st[i]);
write(' ');
end;
writeln;
if empty<>0 then
begin
last:=st[n];
first:=st[1];
_st[1]:=last;
for i:=2 to n-1 do
_st[i]:=st[i];
_st[n]:=first;
end;
for i:=1 to n do
begin
write(_st[i]);
write(' ');
end;
writeln;
end.
Сергей М. (2007-02-08 17:34:00) [19]То ли ты, то ли твоя "скво" - но оба хороши)
ТЗ - коту под хвост
Сергей М. (2007-02-08 17:30:00) [20]
> Vremenniy © (08.02.07 17:28) [5]
>
> Очередь, это ведь обычный массив, или я не прав?
Не прав.
Очередь - это очередь, а массив - это массив.