1. THÔNG BÁO TUYỂN ADMIN DIỄN ĐÀN 2013
    Tìm kiếm nhà trọ - Ở ghép
    THÔNG BÁO BÁN ÁO SPKT.NET CHO THÀNH VIÊN DIỄN ĐÀN


    HÃY TÌM KIẾM Ở ĐÂY TRƯỚC KHI ĐẶT CÂU HỎI
    {xen:phrase loading}

Sử dụng danh sách liên kết để khai báo cho đa thức

Thảo luận trong 'Thảo Luận' bắt đầu bởi phuongtin, 22 Tháng mười 2010.

  1. phuongtin New Member

    Số bài viết: 10
    Đã được thích: 0
    Điểm thành tích: 0
    Đây là hàm hiển thị hàm f(X) 1 cách trực quan. Các bạn thử xem mình còn có lỗi hok nhé! Hàm hơi dài mong các bạn cố gắng xem nhé!

    CODE c++:


    1. void Printf_List(List L)
    2. {
    3. Position P=First_List(L);
    4. if(P->Next->Element.He_So<0) </SPAN>
    5. {
    6. if(P->Next->Element.So_Mu==0) printf("- %.1f",-(P->Next->Element.He_So)); </SPAN>
    7. else </SPAN>
    8. if(P->Next->Element.So_Mu==1) printf("- %.1fx",-(P->Next->Element.He_So)); </SPAN>
    9. else </SPAN>
    10. printf("- %.1fx^%d",-(P->Next->Element.He_So),P->Next->Element.So_Mu); </SPAN>
    11. }
    12. else if(P->Next->Element.He_So>0) </SPAN>
    13. {
    14. if(P->Next->Element.So_Mu==0) printf("%.1f",P->Next->Element.He_So); </SPAN>
    15. else </SPAN>
    16. if(P->Next->Element.So_Mu==1) printf("%.1fx",P->Next->Element.He_So); </SPAN>
    17. else </SPAN>
    18. printf("%.1fx^%d",P->Next->Element.He_So,P->Next->Element.So_Mu); </SPAN>
    19. }
    20. P=P->Next;
    21. while(P->Next!=NULL) </SPAN>
    22. {
    23. if(P->Next->Element.He_So<0) </SPAN>
    24. if(P->Next->Element.So_Mu==0) printf(" - %.1f",-P->Next->Element.He_So); </SPAN>
    25. else </SPAN>
    26. if(P->Next->Element.So_Mu==1) printf(" - %.1fx",-P->Next->Element.He_So); </SPAN>
    27. else </SPAN>
    28. printf(" - %.1fx^%d",-P->Next->Element.He_So,P->Next->Element.So_Mu); </SPAN>
    29. else if(P->Next->Element.He_So>0) </SPAN>
    30. if(P->Next->Element.So_Mu==0) printf(" + %.1f",P->Next->Element.He_So); </SPAN>
    31. else </SPAN>
    32. if(P->Next->Element.So_Mu==1) printf("+ %.1fx",P->Next->Element.He_So); </SPAN>
    33. else </SPAN>
    34. printf(" + %.1fx^%d",P->Next->Element.He_So,P->Next->Element.So_Mu); </SPAN>
    35. P=P->Next;
    36. }
    37. }
    Đây là chương trình nhập, xử lý và in đa thức lên màn hình:
    CODE c++:


    1. #include<conio.h>
    2. #include<stdio.h> </SPAN>
    3. #include<malloc.h> </SPAN>
    4. typedef struct </SPAN>
    5. {
    6. float He_So; </SPAN>
    7. int So_Mu; </SPAN>
    8. }ElementType;
    9. typedef struct Node </SPAN>
    10. {
    11. ElementType Element;
    12. Node* Next;
    13. };
    14. typedef Node* Position; </SPAN>
    15. typedef Position List; </SPAN>
    16. void MakeNull_List(List *Header) </SPAN>
    17. {
    18. (*Header)=(Node*)malloc(sizeof(Node)); </SPAN>
    19. (*Header)->Next=NULL;
    20. }
    21. int Empty_List(List L) </SPAN>
    22. {
    23. return (L->Next==NULL); </SPAN>
    24. }
    25. Position First_List(List L)
    26. {
    27. return L; </SPAN>
    28. }
    29. void Insert_List(ElementType X,Position P,List *L) </SPAN>
    30. {
    31. Position T;
    32. T=(Node*)malloc(sizeof(Node)); </SPAN>
    33. T->Element=X;
    34. T->Next=P->Next;
    35. P->Next=T;
    36. }
    37. void Delete_List(Position P,List *L) </SPAN>
    38. {
    39. Position T;
    40. if(P->Next!=NULL) </SPAN>
    41. {
    42. T=P->Next;
    43. P->Next=T->Next;
    44. free(T);
    45. }
    46. }
    47. Position End_List(List L)
    48. {
    49. Position P;
    50. P=First_List(L);
    51. while(P->Next!=NULL) P=P->Next; </SPAN>
    52. return P; </SPAN>
    53. }
    54. void Read_List(List *L) </SPAN>
    55. {
    56. int i,n,t; </SPAN>
    57. ElementType X;
    58. Position P;
    59. P=First_List(*L);
    60. printf("Nhap vao so luong phan tu cua da thuc: "); scanf("%d",&n); </SPAN>
    61. for(i=0;i<n;i++) </SPAN>
    62. {
    63. printf("He so thu %d: ",i+1); scanf("%f",&X.He_So); </SPAN>
    64. printf("So mu thu %d: ",i+1); scanf("%d",&X.So_Mu); </SPAN>
    65. if(X.He_So!=0) Insert_List(X,End_List(*L),L); </SPAN>
    66. }
    67. }
    68. void Sort_List(Position P, Position T, List *L) </SPAN>
    69. {
    70. ElementType X;
    71. X=P->Next->Element;
    72. P->Next->Element=T->Next->Element;
    73. T->Next->Element=X;
    74. }
    75. void Test_List(List *L) </SPAN>
    76. {
    77. Position P=First_List(*L),T;
    78. Position H=First_List(*L);
    79. while(P->Next!=NULL) </SPAN>
    80. {
    81. T=P->Next;
    82. while(T->Next!=NULL) </SPAN>
    83. {
    84. if(P->Next->Element.So_Mu==T->Next->Element.So_Mu) </SPAN>
    85. {
    86. P->Next->Element.He_So+=T->Next->Element.He_So;
    87. Delete_List(T,L);
    88. }
    89. else T=T->Next; </SPAN>
    90. }
    91. if(P->Next->Element.He_So==0) Delete_List(P,L); </SPAN>
    92. else P=P->Next; </SPAN>
    93. };
    94. }
    95. void Sort_List(List *L) </SPAN>
    96. {
    97. Position P=First_List(*L),T;
    98. Test_List(L);
    99. while(P->Next!=NULL) </SPAN>
    100. {
    101. T=P->Next;
    102. while(T->Next!=NULL) </SPAN>
    103. {
    104. if(P->Next->Element.So_Mu<T->Next->Element.So_Mu) Sort_List(P,T,L); </SPAN>
    105. T=T->Next;
    106. }
    107. P=P->Next;
    108. }
    109. }
    110. void Printf_List(List L) </SPAN>
    111. {
    112. Position P=First_List(L);
    113. Sort_List(&L);
    114. if(P->Next!=NULL) </SPAN>
    115. {
    116. if(P->Next->Element.He_So==1) </SPAN>
    117. {
    118. if(P->Next->Element.So_Mu==0) printf("%.1f",(P->Next->Element.He_So)); </SPAN>
    119. else </SPAN>
    120. if(P->Next->Element.So_Mu==1) printf("x"); </SPAN>
    121. else </SPAN>
    122. printf("x^%d",P->Next->Element.So_Mu); </SPAN>
    123. }
    124. else </SPAN>
    125. if(P->Next->Element.He_So==-1) </SPAN>
    126. {
    127. if(P->Next->Element.So_Mu==0) printf("- %.1f",-(P->Next->Element.He_So)); </SPAN>
    128. else </SPAN>
    129. if(P->Next->Element.So_Mu==1) printf("- x"); </SPAN>
    130. else </SPAN>
    131. printf("- x^%d",P->Next->Element.So_Mu); </SPAN>
    132. }
    133. else if(P->Next->Element.He_So<0) </SPAN>
    134. {
    135. if(P->Next->Element.So_Mu==0) printf("- %.1f",-(P->Next->Element.He_So)); </SPAN>
    136. else </SPAN>
    137. if(P->Next->Element.So_Mu==1) printf("- %.1fx",-(P->Next->Element.He_So)); </SPAN>
    138. else </SPAN>
    139. printf("- %.1fx^%d",-(P->Next->Element.He_So),P->Next->Element.So_Mu); </SPAN>
    140. }
    141. else </SPAN>
    142. {
    143. if(P->Next->Element.So_Mu==0) printf("%.1f",P->Next->Element.He_So); </SPAN>
    144. else </SPAN>
    145. if(P->Next->Element.So_Mu==1) printf("%.1fx",P->Next->Element.He_So); </SPAN>
    146. else </SPAN>
    147. printf("%.1fx^%d",P->Next->Element.He_So,P->Next->Element.So_Mu); </SPAN>
    148. }
    149. P=P->Next;
    150. while(P->Next!=NULL) </SPAN>
    151. {
    152. if(P->Next!=NULL) </SPAN>
    153. {
    154. if(P->Next->Element.He_So==1) </SPAN>
    155. {
    156. if(P->Next->Element.So_Mu==0) printf(" + %.1f",(P->Next->Element.He_So)); </SPAN>
    157. else </SPAN>
    158. if(P->Next->Element.So_Mu==1) printf(" + x"); </SPAN>
    159. else </SPAN>
    160. printf(" + x^%d",P->Next->Element.So_Mu); </SPAN>
    161. }
    162. else </SPAN>
    163. if(P->Next->Element.He_So==-1) </SPAN>
    164. {
    165. if(P->Next->Element.So_Mu==0) printf(" - %.1f",-(P->Next->Element.He_So)); </SPAN>
    166. else </SPAN>
    167. if(P->Next->Element.So_Mu==1) printf(" - x"); </SPAN>
    168. else </SPAN>
    169. printf(" - x^%d",P->Next->Element.So_Mu); </SPAN>
    170. }
    171. else </SPAN>
    172. if(P->Next->Element.He_So<0) </SPAN>
    173. {
    174. if(P->Next->Element.So_Mu==0) printf(" - %.1f",-(P->Next->Element.He_So)); </SPAN>
    175. else </SPAN>
    176. if(P->Next->Element.So_Mu==1) printf(" - %.1fx",-(P->Next->Element.He_So)); </SPAN>
    177. else </SPAN>
    178. printf(" - %.1fx^%d",-(P->Next->Element.He_So),P->Next->Element.So_Mu); </SPAN>
    179. }
    180. else </SPAN>
    181. {
    182. if(P->Next->Element.So_Mu==0) printf(" + %.1f",P->Next->Element.He_So); </SPAN>
    183. else </SPAN>
    184. if(P->Next->Element.So_Mu==1) printf(" + %.1fx",P->Next->Element.He_So); </SPAN>
    185. else </SPAN>
    186. printf(" + %.1fx^%d",P->Next->Element.He_So,P->Next->Element.So_Mu); </SPAN>
    187. }
    188. P=P->Next;
    189. }
    190. }
    191. }
    192. else printf("0"); </SPAN>
    193. }
    194. main()
    195. {
    196. List D;
    197. Position P=First_List(D);
    198. MakeNull_List(&D);
    199. Read_List(&D);
    200. Sort_List(&D);
    201. printf("\n\nHam f(x) = "); </SPAN>
    202. Printf_List(D);
    203. getch();
    204. }

Chia sẻ trang này