Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Умножение полиномов (многочленов) [D7]


neitrosha ©   (2011-03-21 17:34:00) 

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

вот сам код (всё работает)

procedure PrintPolinom(var B:link; var Ed:TEdit);
var S:string;
t:Link;
begin
S:='';
t:=B;
While t<>nil do
begin
S:=S+'+'+IntToStr(t^.coef)+'x^'+Int ToStr(t^.st);
t:=T^.next;
end;
ed.Text:=S;
end;

procedure AddToEnd (var B:link; var w:link);
var t :Link;
begin
t:=B;
if B<>nil
then
begin
While T^.next<>nil do
t:=t^.next;
t^.next:=w;
end
else
B:=w;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
p:=nil; Q:=nil;
end;

procedure TForm1.Button1Click(Sender: TObject);
var w:link;
begin
new(w);
W^.coef:=StrToInt(edit1.Text);
W^.st:=StrToInt(edit2.Text);
W^.next:=nil;
AddToEnd(P,w);
PrintPolinom(P,edit3);
end;

procedure TForm1.Button2Click(Sender: TObject);
var w:link;
begin
new(w);
W^.coef:=StrToInt(edit4.Text);
W^.st:=StrToInt(edit5.Text);
W^.next:=nil;
AddToEnd(Q,w);
PrintPolinom(Q,edit6);
end;

вообще, каждый множитель у меня вбивается отдельно, т.е. сначала вбивается коэффициент перед ИКС, потом его степень, нажатием на баттон он переходит в эдит уже в готовом виде (например "+7x^5"), и так далее.

нужна процедура перемножения...понимаю, что нужно как-то с помощью массивов, но вообще не знаю, как сделать. напишите процедуру по этому коду, пожалуйста


Sha   (2011-03-21 21:27:00) [1]

Сделать по аналогии.


Sha   (2011-03-21 21:26:00) [2]

Тема: умножение разреженных матриц (векторов).
Искать в гугле (яндексе).


han_malign   (2011-03-21 18:24:00) [3]

У тебя есть два множества пар {P=(p, a)}(размеры N1 и N2) упорядоченных по p, по операции P1*P2 = (p1+p2,a1*a2)- получаешь декартово произведение(каждый элемент с каждым) множеств размером N1*N2 - сортируешь по p- и все элементы с одинаковым p- объединяешь, суммируя а...

Можно заранее вычислить результирующую степень полинома и посчитать на прямых массивах ( for i:= 0 to N1 do for j:= 0 to N2 do inc(a[i+j], a1[i]*a2[j]);) - но не удивлюсь если препод вобъёт степень 100500 - и будет радоваться как дитя наблюдая крах программы...


oldman   (2011-03-21 17:55:00) [4]


> нужна процедура перемножения


a*b?

разбить многочлен на одночлены и перемножить по правилам арифметики религия запрещает?


Наверх

Титульная страница Поиск, карта сайта Написать письмо