#include <iostream>
using namespace std;
typedef struct
{
int coef;
int index;
}datatype ;
typedef struct
{
datatype *elem;
int length;
}SeqList;
void BuildPoly(SeqList &s)
{
s.elem=new datatype[10];
s.length=0;int i=1;
cin>>s.elem->coef>>s.elem->index;
while(s.elem[i-1].coef!=-1&&s.elem[i-1].index!=-1)
{s.length=i;
cin>>s.elem[i].coef>>s.elem[i].index;i++;}
}
void AddPoly(SeqList s1,SeqList s2,SeqList &s3)
{
s3.elem=new datatype[10];
s3.length=0;
datatype *p1=s1.elem,*p2=s2.elem,*p3=s3.elem;
while(p1-s1.elem<s1.length&&p2-s2.elem<s2.length)
{
if(p1->index<p2->index)
{p3->coef=p1->coef;p3->index=p1->index;
p1++;p3++;s3.length++;
}
else if(p1->index>p2->index)
{p3->coef=p2->coef;p3->index=p2->index;
p2++;p3++;s3.length++;}
else if(p1->index==p2->index)
{
if(p1->coef+p2->coef!=0)
{
p3->coef=p1->coef+p2->coef;
p3->index=p1->index;
p3++;s3.length++;
}
p1++;p2++;
}
}
while(p1-s1.elem<s1.length)
{
p3->coef=p1->coef;p3->index=p1->index;
p1++;p3++;s3.length++;
}
while(p2-s2.elem<s2.length)
{
p3->coef=p2->coef;p3->index=p2->index;
p2++;p3++;s3.length++;
}
}
void DispList(SeqList s)
{
for(int i=0;i<s.length;i++)
{ cout<<s.elem[i].coef<<'\t'<<s.elem[i].index<<'\t';}
cout<<endl;
}
int main()
{
SeqList s1,s2,s3;
BuildPoly(s1);
BuildPoly(s2);
AddPoly(s1,s2,s3);
DispList(s3);
return 0;
}
uj5u.com熱心網友回復:
void BuildPoly(SeqList &s)
{
s.elem=new datatype[10];
s.length=0;
int i=1;
//cin>>s.elem->coef>>s.elem->index;
cin>>s.elem[i-1].coef>>s.elem[i-1].index;
while(s.elem[i-1].coef!=-1&&s.elem[i-1].index!=-1)
{
s.length=i;
cin>>s.elem[i].coef>>s.elem[i].index;
i++;
}
}
供參考~
測驗代碼:
1 1
2 2
-1 -1
1 1
2 2
-1 -1
2 1 4 2
加一些列印可以更好的了解程式執行的順序~
uj5u.com熱心網友回復:
非常感謝,那如果要把系數為零的一項洗掉要怎么做呢轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/268201.html
標籤:新手樂園
上一篇:求解答
下一篇:求大神carry!!!
