Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ стэк

Автор: Гость 27.11.2007 2:45

помогите, пожалуйста, как можно сложить 2 многочлена при помощи стека?

Автор: Гость 27.11.2007 3:00

очень надо! срочно!

Автор: мисс_граффити 27.11.2007 4:42

показывай, что пробовал(а) делать

Автор: damir 2.12.2007 0:36

я вообще не знаю как подобраться! тему толком не объяснили.

Автор: pascal65536 2.12.2007 16:38

А что на этот счет пишут в интернете?

Автор: damir 3.12.2007 1:59

сколько я не рыл, накрпать ни че не удалось. mega_chok.gif

Автор: Гость 9.12.2007 4:12

я смог сделать задачю с помощью масивов. а со стэками тока на бумаге в виде картинок.
получилось так: создаем 3 стэка a,b,с (2 для многочленов + 1 для сумма), длиной равной наивысшей степени переменной + 1 (для свободного члена). создаем 3 указателя q,w и s направленные на начала стеков соответственно a,b,c. заполняем стеки, если один многочлен длиннее другого то пустые остаются равными нулю. потом запускаем цикл от 1 до длинны стека. s:=q+w (как правильно написать не знаю). потом все указатели перенаправляются на следуюшие элементы и все пвторяется. цикл заканчивается. вывод стека с.
помоуму так. но как код выглядит я даже не могу предположить.

Автор: Michael_Rybak 9.12.2007 4:29

ну вот так и пиши.

что именно не получается?

создаешь три стека, создаем три указателя и т.д., у тебя ведь все написано.

Автор: damir 9.12.2007 4:46

как создать эти три стэка, указателя. я пытался иожет че касячю, но не смог. как сдлать так допустим есть две ячейки стека, есть указаттель A, указывающий на первую. как посмотреть значение этой ячейки???

Автор: Michael_Rybak 9.12.2007 4:52

Цитата
как посмотреть значение этой ячейки???

разыменовать указатель А.

сначала разберись, как вообще стек реализуется.



Автор: damir 9.12.2007 5:21


program pp(st);
type
ptr=^stack;
stack=record
info:real; {это значение ячейки?}
next:ptr; {это указатель на следуюшию ячейку?}
end;
var top,a:^stack; {стэк а?}
top,b:^stack;
top,c:^stack;
begin
{создали стек а, направили указатель a на него?}
new(a);
a^.next:=nil;
top:=a;
{---------}
new(b);
b^.next:=nil;
top:=b;
{---------}
new(с);
c^.next:=nil;
top:=c;
end.


Автор: Michael_Rybak 9.12.2007 6:49

ты трижды объявляешь переменную top.

ну, для начала заполни стеки А и В. посмотри в faq модуль для работы со стеком.

Автор: damir 9.12.2007 23:51

var top,a,b,c:^stack;  {так? или для каждого стека нужен свой top? типа top_a, top_b, tor_c}
begin {далее тотже код}

еще вот создание стека
First: = nil; {начало с пустого списка}
While n>0 do
begin
New®;
r^.Next:=first;
r^.Number:=n;
First:=r;
n := n-1
end;

First будет началом стека???

Автор: damir 18.12.2007 22:50

ВСЁ. СДЕЛАЛ!!! кому нить понадобатся пришлю