Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.02.25;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.51 MB
Время: 0.038 c
2-1170752418
Medved_
2007-02-06 12:00
2007.02.25
MDI


3-1164966057
salexn
2006-12-01 12:40
2007.02.25
Embedded Yaffil и UDF


15-1170601610
Ricks
2007-02-04 18:06
2007.02.25
Куда девался пункт меню Project->Resources???


2-1170914025
sergeyst
2007-02-08 08:53
2007.02.25
MDI


4-1160637285
Dront
2006-10-12 11:14
2007.02.25
Как заставить окно оставаться всегда поверх всех других окон





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский