私は乗算関数の実装からなるプログラムを書いていますが、3つの関数、つまりマッチ、加算、および乗算の問題があります。連合リストを使った多項式のマッチ、加算、および乗算
match関数は、2つの多項式が同じかどうかを判断するものとします。 trueの場合はtrueを返し、そうでない場合はfalseを返します。
関数を追加すると、2つの多項式が追加されます。
乗算は、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'と表現することは簡単です(サイドノート:多項式を用いた計算は非常に間違っています) –