fork download
  1. #include<stdio.h>
  2. #include<conio.h>
  3. #include<math.h>
  4. struct Node
  5. {
  6. float heSo;
  7. int soMu;
  8. Node* link;
  9. };
  10. // Khoi tao danh sach rong
  11. struct List
  12. {
  13. Node *first, *last;
  14. };
  15.  
  16. void init(List &l)
  17. {
  18. l.first = l.last = NULL;
  19. }
  20. // Tao mot Node moi
  21. Node *GetNode(float heSo, int soMu)
  22. {
  23. Node *p;
  24. p = new Node;
  25. if(p == NULL)
  26. return NULL;
  27. p->heSo = heSo;
  28. p->soMu = soMu;
  29. p->link = NULL;
  30. return p;
  31. }
  32. //Gan mot Node p vao danh sach
  33. void AddLast(List &l, Node *p)
  34. {
  35. if(l.first == NULL) //ds rong
  36. {
  37. l.first = l.last = p;
  38. }
  39. else
  40. {
  41. l.last->link = p;
  42. l.last = p;
  43. }
  44. }
  45. //Them mot Node voi du lieu la heSo va soMu vao danh sach
  46. void InsertLast(List &l, float heSo, int soMu)
  47. {
  48. Node *p = GetNode(heSo, soMu);
  49. if(p == NULL)
  50. return;
  51. AddLast(l, p);
  52. }
  53. //Ham nhap da thuc
  54. void NhapDaThuc(List &l)
  55. {
  56. float heSo;
  57. int soMu;
  58. printf("\nBat dau nhap da thuc (nhap he so 0 de ket thuc): ");
  59. do
  60. {
  61. printf("\nNhap he so: ");
  62. scanf("%f",&heSo);
  63. if(heSo == 0)
  64. break;
  65. printf("\nNhap so mu: ");
  66. scanf("%d",&soMu);
  67. InsertLast(l, heSo, soMu);
  68. }while(heSo != 0);
  69. printf("\nDa nhap da thuc xong! \n");
  70. }
  71.  
  72. void XuatDanhSach(List l)
  73. {
  74. Node *p;
  75. p = l.first;
  76. printf("\n");
  77. while(p != NULL)
  78. {
  79. printf("%.2f, %d\t", p->heSo, p->soMu);
  80. p = p->link;
  81. }
  82. }
  83.  
  84. void XuatDaThuc(List l)
  85. {
  86. Node *p, *q;
  87. p = l.first;
  88. q = p->link;
  89. printf("\n");
  90. //phan tu dau tien
  91. printf("%.f*x^%d",p->heSo, p->soMu);
  92. while(q != NULL)
  93. {
  94. //phan tu tai vi tri thu 2 cho toi truoc phan tu co so mu = 0
  95. if(q->heSo > 0 && q->soMu != 0)
  96. printf("+%.2f*x^%d",q->heSo, q->soMu);
  97. if(q->heSo < 0 && q->soMu != 0)
  98. printf("%.2f*x^%d",q->heSo, q->soMu);
  99. //phan tu co so mu = 0
  100. if(q->heSo > 0 && q->soMu == 0)
  101. printf("+%.2f",q->heSo);
  102. if(q->heSo < 0 && q->soMu == 0)
  103. printf("%.2f",q->heSo);
  104. q = q->link;
  105. }
  106. }
  107. //Cong da thuc: d3=d2+d1
  108. void CongDaThuc(List d1, List d2, List &d3)
  109. {
  110. init(d3);
  111. Node *p = d1.first, *q = d2.first;
  112. float tongHeSo;
  113. while(p&&q)
  114. {
  115. if(p->soMu == q->soMu)
  116. {
  117. tongHeSo = p->heSo + q->heSo;
  118. if(tongHeSo != 0)
  119. {
  120. InsertLast(d3, tongHeSo, p->soMu);
  121. p = p->link;
  122. q = q->link;
  123. }
  124. }
  125. else if(p->soMu > q->soMu)
  126. {
  127. InsertLast(d3, p->heSo, p->soMu);
  128. p = p->link;
  129. }
  130. else
  131. {
  132. InsertLast(d3, q->heSo, q->soMu);
  133. q = q->link;
  134. }
  135. }
  136. while(q)
  137. {
  138. InsertLast(d3, q->heSo, q->soMu);
  139. q = q->link;
  140. }
  141. while(p)
  142. {
  143. InsertLast(d3, p->heSo, p->soMu);
  144. p = p->link;
  145. }
  146. }
  147. //Doi dau da thuc tu duong sang am
  148. void DoiDauDaThuc(List &dx)
  149. {
  150. Node *p = dx.first;
  151. while(p)
  152. {
  153. p->heSo = -(p->heSo);
  154. p = p->link;
  155. }
  156. }
  157.  
  158. double SumEvenNumber(List l, int &x)
  159. {
  160. Node *p;
  161. p = l.first;
  162. double s = 0;
  163. while (p != NULL)
  164. {
  165. s += (p->heSo)*(pow(x,p->soMu));
  166. p = p->link;
  167. }
  168. return s;
  169. }
  170.  
  171. //Hoan vi 2 so thuc
  172. void Swap1(float &x, float &y)
  173. {
  174. float z = x;
  175. x = y;
  176. y = z;
  177. }
  178. //Hoan vi 2 so nguyen
  179. void Swap2 (int &a, int &b)
  180. {
  181. int c = a;
  182. a = b;
  183. b = c;
  184. }
  185. //Sap xep gian dan
  186. void InterchangeSort(List &l)
  187. {
  188. for(Node *p = l.first; p != l.last; p = p->link)
  189. {
  190. for(Node *q = p->link; q != NULL; q = q->link)
  191. {
  192. if(p->soMu < q->soMu)
  193. {
  194. Swap1(p->heSo, q->heSo);
  195. Swap2(p->soMu, q->soMu);
  196. }
  197. }
  198. }
  199. }
  200.  
  201. int main()
  202. {
  203. List d1,d2,d3;
  204. init(d1);
  205. init(d2);
  206. init(d3);
  207.  
  208. int x = 0;
  209.  
  210. NhapDaThuc(d1);
  211. InterchangeSort(d1);
  212. printf("Danh sach bieu dien da thuc d1: ");
  213. XuatDanhSach(d1);
  214. printf("\nBieu dien da thuc: ");
  215. XuatDaThuc(d1);
  216. printf("\n");
  217.  
  218. NhapDaThuc(d2);
  219. InterchangeSort(d2);
  220. printf("Danh sach bieu dien da thuc d2: ");
  221. XuatDanhSach(d2);
  222. printf("\nBieu dien da thuc: ");
  223. XuatDaThuc(d2);
  224. printf("\n---------------------\n");
  225.  
  226. CongDaThuc(d1,d2,d3);
  227. printf("\nDanh sach bieu dien da thuc d3: ");
  228. XuatDanhSach(d3);
  229. printf("\nBieu dien da thuc: ");
  230. XuatDaThuc(d3);
  231.  
  232. printf("\nHieu da thuc d3 = d2 - d1\n");
  233. DoiDauDaThuc(d1);
  234. CongDaThuc(d1,d2,d3);
  235. printf("\nDanh sach bieu dien da thuc d3: ");
  236. XuatDanhSach(d3);
  237.  
  238. printf("\nNhap vao x: ");
  239. scanf("%d",&x);
  240. printf("Tong cua da thuc khi co x = %.2lf\n",SumEvenNumber(d3,x));
  241. }
  242.  
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
prog.c:2:18: fatal error: conio.h: No such file or directory
 #include<conio.h>
                  ^
compilation terminated.
stdout
Standard output is empty