Так что я пишу программу, состоящую из реализаций функции умножения, однако у меня возникли проблемы с написанием трех функций: совпадения, добавления и многократного ввода.Соответствие, добавление и умножение для многочленов с использованием связанного списка
Функция совпадения должна указывать, совпадают ли 2 полинома. если так возвращает true, else false.
Добавить функцию jut добавляет 2 полинома.
Умножение только дает произведение двух полиномов.
Я зациклился на том, как начать эти функции. Любые советы или отзывы будут полезны. Огромное спасибо.
class Dlist
{
private:
Node* front;
public:
Dlist(Node* f = NULL){front = f;}
void insertInOrder(int c, int x, int y)
{
Node* nn = new Node;
nn->coef = c;
nn->xdeg = x;
nn->ydeg = y;
int nsum = x + y;
Node* p = front;
if(front == NULL){
front = nn;
return;
}
while(p != NULL){
if(x == p->xdeg && y == p->ydeg){
p->coef += c;
return;
}
p = p->next;
}
p = front;
if(nsum > p->xdeg + p->ydeg){
nn->next = p;
front = nn;
return;
}
else{
while(p->next != NULL && p->next->xdeg + p->next->ydeg > nsum){
p = p->next;
}
}
nn->next = p->next;
p->next = nn;
return;
};
void print()
{
Node* p = front;
while(p != NULL){
cout << p->coef << "/" << p->xdeg << "/" << p->ydeg << " -> ";
p = p->next;
}
cout << "NULL" << endl;
return;
};
int degree()
{
Node* p = front;
int maxd = 0;
while(p != NULL){
if(maxd < p->xdeg + p->ydeg){
maxd = p->xdeg + p->ydeg;
}
p = p->next;
}
return maxd;
};
void coefficient(int input)
{
Node* p = front;
int index = 0;
while(p != NULL){
p = p->next;
index++;
}
if(input < 0){
cout << "Does not exist." << endl;
return;
}
else if(input > index){
cout << "Does not exist." << endl;
return;
}
p = front;
for(int i = 0; i != input; i++){
p = p->next;
}
cout << p->coef << endl;
return;
}
void sum()
{
}
};
Представление полиномов как 'std :: vector' облегчает вещи (Боковое примечание: вычисление с помощью полиномов становится неточным очень скоро) –