Добавление двух полиномов с помощью связанного списка
Я попытался разработать программу, которая берет два полинома от пользователя, а затем добавляет их, и остальные записи записываются точно так же, как у меня есть трудности с тем, как это сделать.
Например
если я дам ввод
2x^3+8x^4+5x^6
и
3x^4+4x^6
тогда выход должен быть
2x^3+11x^4+9x^6
но все что я получаю это ошибка
Что я уже пробовал:
#include<iostream> using namespace std; class node{ private: int coeff; int exp; node *next; public: void set(int coeff,int exp) { this->coeff=coeff; this->exp=exp; } node *getnext() { return next; } void setnext(node *next) { this->next=next; } int coef() { return coeff; } int e() { return exp; } }; class list{ private: node *head; node *current; int size; public: list() { head=new node(); head->setnext(NULL); current=NULL; size=0; } void create() { int co,ex; node *newnode=new node(); cout<<"Enter coefficient :"; cin>>co; cout<<"Enter exponent :"; cin>>ex; newnode->set(co,ex); if(current!=NULL) { newnode->setnext(current->getnext()); current->setnext(newnode); current=newnode; } else { newnode->setnext(NULL); head->setnext(newnode); current=newnode; } size++; } int coef() { return current->coef(); } int e() { return current->e(); } node *cur() { return current; } int length() { return size; } void start() { current=head->getnext(); } void next() { current=current->getnext(); } void display() { if(current!=NULL) { cout<<current->coef()<<"x^"<<current->e(); } } void add(int co,int e) { node *newnode=new node(); newnode->set(co,e); if(current!=NULL) { newnode->setnext(current->getnext()); current->setnext(newnode); current=newnode; } else { newnode->setnext(NULL); head->setnext(newnode); current=newnode; } size++; } void cc(node *current) { this->current=current; } }; int main() { list l1,l2,l3; int n1,n2; cout<<"Please enter elements in ordered form "<<endl; cout<<"Enter number of terms you want to enter in first polynomial :"; cin>>n1; for(int i=1;i<=n1;i++) { l1.create(); } cout<<"Enter number of terms you want to enter in second polynomial :"; cin>>n2; for(int j=1;j<=n2;j++) { l2.create(); } n1=l1.length(); n2=l2.length(); l1.start(); l2.start(); for(int i=1;i<=n1;i++) { l1.display(); if(i<n1) { cout<<"+"; } l1.next(); } cout<<endl; for(int i=1;i<=n2;i++) { l2.display(); if(i<n2) { cout<<"+"; } l2.next(); } int n,sum; if(n1>n2) { n=n1; } else { n=n2; } node *temp1; node *temp2; l1.start(); l2.start(); for(int i=1;i<=n;i++) { temp1=l1.cur(); temp2=l2.cur(); for(int i=1;i<=n1;i++) { for(int i=1;i<=n2;i++) { if(l1.e()==l2.e()) { sum=l1.coef()+l2.coef(); l3.add(sum,l1.e()); } l2.next(); } l1.next(); } l1.cc(temp1); l2.cc(temp2); if(l1.e()>l2.e()) { l3.add(l1.coef(),l1.e()); } else { l3.add(l2.coef(),l2.e()); } } cout<<endl; int n3=l3.length(); l3.start(); for(int i=1;i<=n3;i++) { l3.display(); if(i<n3) { cout<<"+"; } l3.next(); } return 0; }
Richard MacCutchan
- но все, что я получаю, - это ошибка."
Какая ошибка и где она происходит?
Patrice T
Никаких репостов пожалуйста
Как добавить два полинома с помощью связанных списков и сохранить ответ в третьем списке[^]