Помощь - Поиск - Пользователи - Календарь
Полная версия: стэк
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Гость
помогите, пожалуйста, как можно сложить 2 многочлена при помощи стека?
Гость
очень надо! срочно!
мисс_граффити
показывай, что пробовал(а) делать
damir
я вообще не знаю как подобраться! тему толком не объяснили.
pascal65536
А что на этот счет пишут в интернете?
damir
сколько я не рыл, накрпать ни че не удалось. mega_chok.gif
Гость
я смог сделать задачю с помощью масивов. а со стэками тока на бумаге в виде картинок.
получилось так: создаем 3 стэка a,b,с (2 для многочленов + 1 для сумма), длиной равной наивысшей степени переменной + 1 (для свободного члена). создаем 3 указателя q,w и s направленные на начала стеков соответственно a,b,c. заполняем стеки, если один многочлен длиннее другого то пустые остаются равными нулю. потом запускаем цикл от 1 до длинны стека. s:=q+w (как правильно написать не знаю). потом все указатели перенаправляются на следуюшие элементы и все пвторяется. цикл заканчивается. вывод стека с.
помоуму так. но как код выглядит я даже не могу предположить.
Michael_Rybak
ну вот так и пиши.

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

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

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

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


damir

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
ты трижды объявляешь переменную top.

ну, для начала заполни стеки А и В. посмотри в faq модуль для работы со стеком.
damir
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
ВСЁ. СДЕЛАЛ!!! кому нить понадобатся пришлю
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.