Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.02.25;
Скачать: CL | DM;

Вниз

Проблемы со стеком   Найти похожие ветки 

 
Vremenniy ©   (2007-02-08 16:59) [0]

Здравствуйте, программисты, я понимаю, что этот форум для начинающих, и тут помогают писать программы, а не пишут, но мне просто больше некуда обратиться, не поможите ли вы мне, точнее не напишите ли вы мне, точнее не мне , а моей девушке, которая в институте на первом курсе учится, но вообще в программирование не соображает, программку простенькую, просто я сам со школы уже ничего не помню, а уже (по глупости) пообещал ей помочь.
Чтобы вводили элементы стека, а при нажатии на кнопку стек инвертировался, т.е. "дно" стека сделать вершиной, а вершину - "дном".
Уж пожалуйста помогите, я думал вспомню, там же ведь еще на Delphi нужно.
Заранее благодарен!


 
Сергей М. ©   (2007-02-08 17:16) [1]

Кирдык тебе и "твоей девушке".


 
Сергей М. ©   (2007-02-08 17:18) [2]


> которая в институте на первом курсе учится, но вообще в
> программирование не соображает


Двойной кирдык.
Ей.
А уж о тебе и речи не идет)


 
Johnmen ©   (2007-02-08 17:19) [3]


> а уже (по глупости) пообещал ей помочь.

За свою глупость в нашем суровом мире принято отвечать по всей строгости.
Вот и ответишь...:)


 
Vremenniy ©   (2007-02-08 17:22) [4]

Ну хотя бы алгоритм подскажите.


 
Vremenniy ©   (2007-02-08 17:28) [5]

Очередь, это ведь обычный массив, или я не прав?


 
Сергей М. ©   (2007-02-08 17:30) [6]


> хотя бы алгоритм подскажите


Хм...

Попытаюсь телепатировать:

1) Взять значение c вершины стека, сохранить во врем.переменной
2) Поменять значение дна стека со значением врем.переменной
3) Поместить в вершину стека значение врем.переменной

Оно ?


 
Сергей М. ©   (2007-02-08 17:30) [7]


> Vremenniy ©   (08.02.07 17:28) [5]
>
> Очередь, это ведь обычный массив, или я не прав?


Не прав.

Очередь - это очередь, а массив - это массив.


 
Сергей М. ©   (2007-02-08 17:34) [8]

То ли ты, то ли твоя "скво" - но оба хороши)

ТЗ - коту под хвост


 
Vremenniy ©   (2007-02-08 17:35) [9]

Вот на паскале нашел, но там немного другое задание, еще в школе делал

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.


 
Vremenniy ©   (2007-02-08 17:37) [10]

в ней нужно в стеке поменять местами 1 и последний элементы, можно ее под мое задание переделать или нет?


 
Vremenniy ©   (2007-02-08 18:10) [11]

Ну подскажите, хотя бы где материал взять


 
Virgo_Style ©   (2007-02-08 18:44) [12]

Vremenniy ©   (08.02.07 16:59)
Здравствуйте, программисты, я понимаю, что этот форум для начинающих, и тут помогают писать программы, а не пишут, но мне просто больше некуда обратиться, не поможите ли вы мне, точнее не напишите ли вы мне, точнее не мне , а моей девушке, которая в институте на первом курсе учится, но вообще в программирование не соображает, программку простенькую, просто я сам со школы уже ничего не помню, а уже (по глупости) пообещал ей помочь.


Аж мотороллер вспомнился


 
Vremenniy ©   (2007-02-08 18:57) [13]

Блин, ну вы программисты и народ, нельзя было сразу сказать что не будем помогать, зачем же угарать-то надо мной


 
Virgo_Style ©   (2007-02-08 19:05) [14]

Ты вопрос задай, глядишь и поможем


 
Vremenniy ©   (2007-02-08 19:08) [15]

Это же не трудно вам, эт первый курс
Чтобы вводили элементы стека, а при нажатии на кнопку, стек инвертировался, т.е. "дно" стека сделать вершиной, а вершину - "дном".


 
RASkov   (2007-02-08 19:34) [16]

> [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;


Тоже самое можно и с массивами сделать...» Джо:» «То же самое» с массивами не сделаешь. Да и к стеку это имеет весьма отдаленное отношение.


 
DiamondShark ©   (2007-02-08 19:37) [17]

самый тупой алгоритм (псевдокод):

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;

для сельской местности сойдёт.
конкретная реализация + интерфейс -- за тобой.
чья, в конце концов, девушка?


 
DiamondShark ©   (2007-02-08 19:37) [18]


> RASkov   (08.02.07 19:34) [16]

Не грузи, да не грузим будешь.


 
Vremenniy ©   (2007-02-08 19:40) [19]

RASkov
на форме нужно я так понимаю разместить  TEdit? и кнопку простую? спасибо большое за код, выручил!


 
Vremenniy ©   (2007-02-08 19:43) [20]

DiamondShark
объясни вкратце, как он работает, если не сложно


 
Джо ©   (2007-02-08 19:46) [21]

> [20] Vremenniy ©   (08.02.07 19:43)
> DiamondShark
> объясни вкратце, как он работает, если не сложно

У стека есть две операции: push (поместить значение на вершину стека) и pop («снять» значение с вершины стека). Вот ими и нужно оперировать. И «эмулировать» при их помощи другие операции.


 
DiamondShark ©   (2007-02-08 19:48) [22]


> Vremenniy ©   (08.02.07 19:43) [20]
> DiamondShark
> объясни вкратце, как он работает, если не сложно

Не сложно.
Перекладываем исходный стек в один, потом в другой, потом обратно.


 
RASkov   (2007-02-08 21:45) [23]

> » Джо:
> » «То же самое» с массивами не сделаешь. Да и к стеку это
> имеет весьма отдаленное отношение.

> [18] DiamondShark ©   (08.02.07 19:37)

Если, чесно, я так и не въехал, что в этой ветке подразумевается под термином "стек"...

> [19] Vremenniy ©   (08.02.07 19:40)

Да, но как видимо я не правильно понял вопрос... Что такое в твоем вопросе - стек?
И всеж я думаю, что здесь всетаки не TObjectStack имеется в виду...


 
Джо ©   (2007-02-08 22:17) [24]

> [23] RASkov   (08.02.07 21:45)
> Если, чесно, я так и не въехал, что в этой ветке подразумевается
> под термином "стек"...

В этой ветке под термином «стек» подразумевается абстрактный тип данных «стек».


 
Anatoly Podgoretsky ©   (2007-02-08 22:24) [25]

> Джо  (08.02.2007 22:17:24)  [24]

А стандартный стек, не имеет понятия дно или количество элементов, это уже не совсем стандартный стек.


 
RASkov   (2007-02-08 23:04) [26]

> В этой ветке под термином «стек» подразумевается абстрактный
> тип данных «стек».

Ну я считаю, нужно услышать от автора вопроса, более конкретные определения его стека...



Страницы: 1 вся ветка

Текущий архив: 2007.02.25;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.035 c
15-1168417699
o_serg
2007-01-10 11:28
2007.02.25
Серйиник материнской платы


1-1167296388
ancot
2006-12-28 11:59
2007.02.25
Коллекции (TCollection)


2-1170852064
Лебедев
2007-02-07 15:41
2007.02.25
memo


2-1171020287
zxcv
2007-02-09 14:24
2007.02.25
как дату из DateTimePicker поместить в строковую переменную?


1-1167904951
Kolan
2007-01-04 13:02
2007.02.25
Иключения в потоке. Как правильно обрабатывать?