#include<stdio.h>
#include<conio.h>
#include<math.h>
struct Node
{
float heSo;
int soMu;
Node* link;
};
// Khoi tao danh sach rong
struct List
{
Node *first, *last;
};
void init(List &l)
{
l.first = l.last = NULL;
}
// Tao mot Node moi
Node *GetNode(float heSo, int soMu)
{
Node *p;
p = new Node;
if(p == NULL)
return NULL;
p->heSo = heSo;
p->soMu = soMu;
p->link = NULL;
return p;
}
//Gan mot Node p vao danh sach
void AddLast(List &l, Node *p)
{
if(l.first == NULL) //ds rong
{
l.first = l.last = p;
}
else
{
l.last->link = p;
l.last = p;
}
}
//Them mot Node voi du lieu la heSo va soMu vao danh sach
void InsertLast(List &l, float heSo, int soMu)
{
Node *p = GetNode(heSo, soMu);
if(p == NULL)
return;
AddLast(l, p);
}
//Ham nhap da thuc
void NhapDaThuc(List &l)
{
float heSo;
int soMu;
printf("\nBat dau nhap da thuc (nhap he so 0 de ket thuc): "); do
{
if(heSo == 0)
break;
InsertLast(l, heSo, soMu);
}while(heSo != 0);
printf("\nDa nhap da thuc xong! \n"); }
void XuatDanhSach(List l)
{
Node *p;
p = l.first;
while(p != NULL)
{
printf("%.2f, %d\t", p
->heSo
, p
->soMu
); p = p->link;
}
}
void XuatDaThuc(List l)
{
Node *p, *q;
p = l.first;
q = p->link;
//phan tu dau tien
printf("%.f*x^%d",p
->heSo
, p
->soMu
); while(q != NULL)
{
//phan tu tai vi tri thu 2 cho toi truoc phan tu co so mu = 0
if(q->heSo > 0 && q->soMu != 0)
printf("+%.2f*x^%d",q
->heSo
, q
->soMu
); if(q->heSo < 0 && q->soMu != 0)
printf("%.2f*x^%d",q
->heSo
, q
->soMu
); //phan tu co so mu = 0
if(q->heSo > 0 && q->soMu == 0)
if(q->heSo < 0 && q->soMu == 0)
q = q->link;
}
}
//Cong da thuc: d3=d2+d1
void CongDaThuc(List d1, List d2, List &d3)
{
init(d3);
Node *p = d1.first, *q = d2.first;
float tongHeSo;
while(p&&q)
{
if(p->soMu == q->soMu)
{
tongHeSo = p->heSo + q->heSo;
if(tongHeSo != 0)
{
InsertLast(d3, tongHeSo, p->soMu);
p = p->link;
q = q->link;
}
}
else if(p->soMu > q->soMu)
{
InsertLast(d3, p->heSo, p->soMu);
p = p->link;
}
else
{
InsertLast(d3, q->heSo, q->soMu);
q = q->link;
}
}
while(q)
{
InsertLast(d3, q->heSo, q->soMu);
q = q->link;
}
while(p)
{
InsertLast(d3, p->heSo, p->soMu);
p = p->link;
}
}
//Doi dau da thuc tu duong sang am
void DoiDauDaThuc(List &dx)
{
Node *p = dx.first;
while(p)
{
p->heSo = -(p->heSo);
p = p->link;
}
}
double SumEvenNumber(List l, int &x)
{
Node *p;
p = l.first;
double s = 0;
while (p != NULL)
{
s
+= (p
->heSo
)*(pow(x
,p
->soMu
)); p = p->link;
}
return s;
}
//Hoan vi 2 so thuc
void Swap1(float &x, float &y)
{
float z = x;
x = y;
y = z;
}
//Hoan vi 2 so nguyen
void Swap2 (int &a, int &b)
{
int c = a;
a = b;
b = c;
}
//Sap xep gian dan
void InterchangeSort(List &l)
{
for(Node *p = l.first; p != l.last; p = p->link)
{
for(Node *q = p->link; q != NULL; q = q->link)
{
if(p->soMu < q->soMu)
{
Swap1(p->heSo, q->heSo);
Swap2(p->soMu, q->soMu);
}
}
}
}
int main()
{
List d1,d2,d3;
init(d1);
init(d2);
init(d3);
int x = 0;
NhapDaThuc(d1);
InterchangeSort(d1);
printf("Danh sach bieu dien da thuc d1: "); XuatDanhSach(d1);
printf("\nBieu dien da thuc: "); XuatDaThuc(d1);
NhapDaThuc(d2);
InterchangeSort(d2);
printf("Danh sach bieu dien da thuc d2: "); XuatDanhSach(d2);
printf("\nBieu dien da thuc: "); XuatDaThuc(d2);
printf("\n---------------------\n");
CongDaThuc(d1,d2,d3);
printf("\nDanh sach bieu dien da thuc d3: "); XuatDanhSach(d3);
printf("\nBieu dien da thuc: "); XuatDaThuc(d3);
printf("\nHieu da thuc d3 = d2 - d1\n"); DoiDauDaThuc(d1);
CongDaThuc(d1,d2,d3);
printf("\nDanh sach bieu dien da thuc d3: "); XuatDanhSach(d3);
printf("Tong cua da thuc khi co x = %.2lf\n",SumEvenNumber
(d3
,x
)); }
I2luY2x1ZGU8c3RkaW8uaD4KI2luY2x1ZGU8Y29uaW8uaD4KI2luY2x1ZGU8bWF0aC5oPgpzdHJ1Y3QgTm9kZQp7CglmbG9hdCBoZVNvOwoJaW50IHNvTXU7CglOb2RlKiBsaW5rOwp9OwovLyBLaG9pIHRhbyBkYW5oIHNhY2ggcm9uZwpzdHJ1Y3QgTGlzdAp7CglOb2RlICpmaXJzdCwgKmxhc3Q7Cn07Cgp2b2lkIGluaXQoTGlzdCAmbCkKewoJbC5maXJzdCA9IGwubGFzdCA9IE5VTEw7Cn0KLy8gVGFvIG1vdCBOb2RlIG1vaQpOb2RlICpHZXROb2RlKGZsb2F0IGhlU28sIGludCBzb011KQp7CglOb2RlICpwOwoJcCA9IG5ldyBOb2RlOwoJaWYocCA9PSBOVUxMKQoJCXJldHVybiBOVUxMOwoJCXAtPmhlU28gPSBoZVNvOwoJCXAtPnNvTXUgPSBzb011OwoJCXAtPmxpbmsgPSBOVUxMOwoJCXJldHVybiBwOwp9Ci8vR2FuIG1vdCBOb2RlIHAgdmFvIGRhbmggc2FjaAp2b2lkIEFkZExhc3QoTGlzdCAmbCwgTm9kZSAqcCkKewoJaWYobC5maXJzdCA9PSBOVUxMKSAvL2RzIHJvbmcKCXsKCQlsLmZpcnN0ID0gbC5sYXN0ID0gcDsKCX0KCWVsc2UKCXsKCQlsLmxhc3QtPmxpbmsgPSBwOwoJCWwubGFzdCA9IHA7Cgl9Cn0KLy9UaGVtIG1vdCBOb2RlIHZvaSBkdSBsaWV1IGxhIGhlU28gdmEgc29NdSB2YW8gZGFuaCBzYWNoCnZvaWQgSW5zZXJ0TGFzdChMaXN0ICZsLCBmbG9hdCBoZVNvLCBpbnQgc29NdSkKewoJTm9kZSAqcCA9IEdldE5vZGUoaGVTbywgc29NdSk7CglpZihwID09IE5VTEwpCgkJcmV0dXJuOwoJQWRkTGFzdChsLCBwKTsKfQovL0hhbSBuaGFwIGRhIHRodWMKdm9pZCBOaGFwRGFUaHVjKExpc3QgJmwpCnsKCWZsb2F0IGhlU287CglpbnQgc29NdTsKCXByaW50ZigiXG5CYXQgZGF1IG5oYXAgZGEgdGh1YyAobmhhcCBoZSBzbyAwIGRlIGtldCB0aHVjKTogIik7CglkbwoJewoJCXByaW50ZigiXG5OaGFwIGhlIHNvOiAiKTsKCQlzY2FuZigiJWYiLCZoZVNvKTsKCQlpZihoZVNvID09IDApCgkJYnJlYWs7CgkJcHJpbnRmKCJcbk5oYXAgc28gbXU6ICIpOwoJCXNjYW5mKCIlZCIsJnNvTXUpOwoJCUluc2VydExhc3QobCwgaGVTbywgc29NdSk7Cgl9d2hpbGUoaGVTbyAhPSAwKTsKCXByaW50ZigiXG5EYSBuaGFwIGRhIHRodWMgeG9uZyEgXG4iKTsKfQoKdm9pZCBYdWF0RGFuaFNhY2goTGlzdCBsKQp7CglOb2RlICpwOwoJcCA9IGwuZmlyc3Q7CglwcmludGYoIlxuIik7Cgl3aGlsZShwICE9IE5VTEwpCgl7CgkJcHJpbnRmKCIlLjJmLCAlZFx0IiwgcC0+aGVTbywgcC0+c29NdSk7CgkJcCA9IHAtPmxpbms7Cgl9Cn0KCnZvaWQgWHVhdERhVGh1YyhMaXN0IGwpCnsKCU5vZGUgKnAsICpxOwoJcCA9IGwuZmlyc3Q7CglxID0gcC0+bGluazsKCXByaW50ZigiXG4iKTsKCS8vcGhhbiB0dSBkYXUgdGllbgoJcHJpbnRmKCIlLmYqeF4lZCIscC0+aGVTbywgcC0+c29NdSk7Cgl3aGlsZShxICE9IE5VTEwpCgl7CgkJLy9waGFuIHR1IHRhaSB2aSB0cmkgdGh1IDIgY2hvIHRvaSB0cnVvYyBwaGFuIHR1IGNvIHNvIG11ID0gMAoJCWlmKHEtPmhlU28gPiAwICYmIHEtPnNvTXUgIT0gMCkKCQlwcmludGYoIislLjJmKnheJWQiLHEtPmhlU28sIHEtPnNvTXUpOwoJCWlmKHEtPmhlU28gPCAwICYmIHEtPnNvTXUgIT0gMCkKCQlwcmludGYoIiUuMmYqeF4lZCIscS0+aGVTbywgcS0+c29NdSk7CgkJLy9waGFuIHR1IGNvIHNvIG11ID0gMAoJCWlmKHEtPmhlU28gPiAwICYmIHEtPnNvTXUgPT0gMCkKCQlwcmludGYoIislLjJmIixxLT5oZVNvKTsKCQlpZihxLT5oZVNvIDwgMCAmJiBxLT5zb011ID09IDApCgkJcHJpbnRmKCIlLjJmIixxLT5oZVNvKTsKCQlxID0gcS0+bGluazsKCX0KfQovL0NvbmcgZGEgdGh1YzogZDM9ZDIrZDEKdm9pZCBDb25nRGFUaHVjKExpc3QgZDEsIExpc3QgZDIsIExpc3QgJmQzKQp7Cglpbml0KGQzKTsKCU5vZGUgKnAgPSBkMS5maXJzdCwgKnEgPSBkMi5maXJzdDsKCWZsb2F0IHRvbmdIZVNvOwoJd2hpbGUocCYmcSkKCXsKCQlpZihwLT5zb011ID09IHEtPnNvTXUpCgkJewoJCQl0b25nSGVTbyA9IHAtPmhlU28gKyBxLT5oZVNvOwoJCQlpZih0b25nSGVTbyAhPSAwKQoJCQl7CgkJCQlJbnNlcnRMYXN0KGQzLCB0b25nSGVTbywgcC0+c29NdSk7CgkJCQlwID0gcC0+bGluazsKCQkJCXEgPSBxLT5saW5rOwoJCQl9CgkJfQoJCWVsc2UgaWYocC0+c29NdSA+IHEtPnNvTXUpCgkJewoJCQlJbnNlcnRMYXN0KGQzLCBwLT5oZVNvLCBwLT5zb011KTsKCQkJcCA9IHAtPmxpbms7CgkJfQoJCWVsc2UgCgkJewoJCQlJbnNlcnRMYXN0KGQzLCBxLT5oZVNvLCBxLT5zb011KTsKCQkJcSA9IHEtPmxpbms7CQoJCX0KCX0KCXdoaWxlKHEpIAoJewoJCUluc2VydExhc3QoZDMsIHEtPmhlU28sIHEtPnNvTXUpOwoJCXEgPSBxLT5saW5rOwoJfQoJd2hpbGUocCkgCgl7CgkJSW5zZXJ0TGFzdChkMywgcC0+aGVTbywgcC0+c29NdSk7CgkJcCA9IHAtPmxpbms7Cgl9Cn0KLy9Eb2kgZGF1IGRhIHRodWMgdHUgZHVvbmcgc2FuZyBhbQp2b2lkIERvaURhdURhVGh1YyhMaXN0ICZkeCkKewoJTm9kZSAqcCA9IGR4LmZpcnN0OwoJd2hpbGUocCkKCXsKCQlwLT5oZVNvID0gLShwLT5oZVNvKTsKCQlwID0gcC0+bGluazsKCX0KfQoKZG91YmxlIFN1bUV2ZW5OdW1iZXIoTGlzdCBsLCBpbnQgJngpCnsKCU5vZGUgKnA7CglwID0gbC5maXJzdDsKCWRvdWJsZSBzID0gMDsKCXdoaWxlIChwICE9IE5VTEwpCgl7CgkJcyArPSAocC0+aGVTbykqKHBvdyh4LHAtPnNvTXUpKTsKCQlwID0gcC0+bGluazsKCX0KCXJldHVybiBzOwkKfQoKLy9Ib2FuIHZpIDIgc28gdGh1Ywp2b2lkIFN3YXAxKGZsb2F0ICZ4LCBmbG9hdCAmeSkKewoJZmxvYXQgeiA9IHg7Cgl4ID0geTsKCXkgPSB6Owp9Ci8vSG9hbiB2aSAyIHNvIG5ndXllbgp2b2lkIFN3YXAyIChpbnQgJmEsIGludCAmYikKewoJaW50IGMgPSBhOwoJYSA9IGI7CgliID0gYzsKfQovL1NhcCB4ZXAgZ2lhbiBkYW4Kdm9pZCBJbnRlcmNoYW5nZVNvcnQoTGlzdCAmbCkKewoJZm9yKE5vZGUgKnAgPSBsLmZpcnN0OyBwICE9IGwubGFzdDsgcCA9IHAtPmxpbmspCgl7CgkJZm9yKE5vZGUgKnEgPSBwLT5saW5rOyBxICE9IE5VTEw7IHEgPSBxLT5saW5rKQoJCXsKCQkJaWYocC0+c29NdSA8IHEtPnNvTXUpCgkJCXsKCQkJCVN3YXAxKHAtPmhlU28sIHEtPmhlU28pOwoJCQkJU3dhcDIocC0+c29NdSwgcS0+c29NdSk7CgkJCX0KCQl9Cgl9Cn0KCmludCBtYWluKCkKewoJTGlzdCBkMSxkMixkMzsKCWluaXQoZDEpOwoJaW5pdChkMik7Cglpbml0KGQzKTsKCQoJaW50IHggPSAwOwoJCglOaGFwRGFUaHVjKGQxKTsKCUludGVyY2hhbmdlU29ydChkMSk7CglwcmludGYoIkRhbmggc2FjaCBiaWV1IGRpZW4gZGEgdGh1YyBkMTogIik7CglYdWF0RGFuaFNhY2goZDEpOwoJcHJpbnRmKCJcbkJpZXUgZGllbiBkYSB0aHVjOiAiKTsKCVh1YXREYVRodWMoZDEpOwoJcHJpbnRmKCJcbiIpOwoJCglOaGFwRGFUaHVjKGQyKTsKCUludGVyY2hhbmdlU29ydChkMik7CglwcmludGYoIkRhbmggc2FjaCBiaWV1IGRpZW4gZGEgdGh1YyBkMjogIik7CglYdWF0RGFuaFNhY2goZDIpOwoJcHJpbnRmKCJcbkJpZXUgZGllbiBkYSB0aHVjOiAiKTsKCVh1YXREYVRodWMoZDIpOwoJcHJpbnRmKCJcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIik7CgkKCUNvbmdEYVRodWMoZDEsZDIsZDMpOwoJcHJpbnRmKCJcbkRhbmggc2FjaCBiaWV1IGRpZW4gZGEgdGh1YyBkMzogIik7CglYdWF0RGFuaFNhY2goZDMpOwoJcHJpbnRmKCJcbkJpZXUgZGllbiBkYSB0aHVjOiAiKTsKCVh1YXREYVRodWMoZDMpOwoJCglwcmludGYoIlxuSGlldSBkYSB0aHVjIGQzID0gZDIgLSBkMVxuIik7CglEb2lEYXVEYVRodWMoZDEpOwoJQ29uZ0RhVGh1YyhkMSxkMixkMyk7CglwcmludGYoIlxuRGFuaCBzYWNoIGJpZXUgZGllbiBkYSB0aHVjIGQzOiAiKTsKCVh1YXREYW5oU2FjaChkMyk7CgkKCXByaW50ZigiXG5OaGFwIHZhbyB4OiAiKTsKCXNjYW5mKCIlZCIsJngpOwoJcHJpbnRmKCJUb25nIGN1YSBkYSB0aHVjIGtoaSBjbyB4ID0gJS4ybGZcbiIsU3VtRXZlbk51bWJlcihkMyx4KSk7Cn0K