Advertisement
Guest User

Untitled

a guest
Apr 30th, 2017
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.10 KB | None | 0 0
  1. #include"Polynomial.h"
  2.  
  3.  
  4.  
  5.  
  6. void Polynomial::read() //reading
  7. {
  8. int i;
  9. // cout<<"Enter number of terms"<<endl;
  10. cin>>n;
  11. // cout<<"<exp> <coefficient>"<<endl;
  12. for(i=0; i<n; i++)
  13. {
  14. cin>>k[i].p>>k[i].c;
  15. }
  16. cout<<endl;
  17. }
  18. void Polynomial::print()
  19. {
  20. //sorting
  21. Polynomial r;
  22. int i,j,f=0;
  23. for(i=0; i<n; i++)
  24. {
  25. r.k[i].p=0;
  26. r.k[i].c=0;
  27. }
  28.  
  29. r.n=n;
  30. i=0;
  31. for(i=0; i<n; i++)
  32. {
  33.  
  34. r.k[i].p=k[i].p;
  35. r.k[i].c=k[i].c;
  36. }
  37.  
  38. int g;
  39. double q;
  40. for(j=0; j<r.n; j++)
  41. {
  42. for(i=j+1; i<r.n; i++)
  43. {
  44. if(r.k[i].p<r.k[j].p)
  45. {
  46. g=r.k[i].p;
  47. r.k[i].p=r.k[j].p;
  48. r.k[j].p=g;
  49. q=r.k[i].c;
  50. r.k[i].c=r.k[j].c;
  51. r.k[j].c=q;
  52. }
  53.  
  54. }
  55.  
  56. }
  57. for(i=0; i<r.n; i++)
  58. {
  59. r.k[i].m=1; //common terms out
  60. }
  61.  
  62. g=0;
  63. for(i=0; i<r.n-1; i++)
  64. {
  65. if(r.k[i].p==r.k[i+1].p)
  66. {
  67. g=i;
  68. while(r.k[g].p==r.k[i+1].p)
  69. {
  70. r.k[g].c=r.k[g].c+r.k[i+1].c;
  71. i++;
  72. r.k[i].m=0;
  73. }
  74. i--;
  75.  
  76. }
  77. }
  78. f=0;
  79. for(i=0; i<r.n; i++)
  80. {
  81. if(r.k[i].m!=0&&r.k[i].c!=0)
  82. {
  83. if(r.k[i].c>0)
  84. {
  85. if(r.k[i].p==0&&i==0)
  86. {
  87. cout<<r.k[i].c;
  88. f++;
  89. }
  90. if(r.k[i].p!=0&&i==0&&r.k[i].p!=1&&r.k[i].c!=1)
  91. {
  92. cout<<r.k[i].c<<"X^"<<r.k[i].p;
  93. f++;
  94. }
  95. if(r.k[i].p!=0&&i==0&&r.k[i].p!=1&&r.k[i].c==1)
  96. {
  97. cout<<"X^"<<r.k[i].p;
  98. f++;
  99. }
  100. if(r.k[i].p!=0&&i==0&&r.k[i].p==1&&r.k[i].c==1)
  101. {
  102. cout<<"X";
  103. f++;
  104. }
  105. if(r.k[i].p!=0&&i==0&&r.k[i].p==1&&r.k[i].c!=1)
  106. {
  107. cout<<r.k[i].c<<"X";
  108. f++;
  109. }
  110. if(r.k[i].p!=0&&i!=0&&r.k[i].p==1&&r.k[i].c!=1)
  111. {
  112. if(f!=0)
  113. {
  114. cout<<" +";
  115. }
  116. cout<<r.k[i].c<<"X";
  117. f++;
  118. }
  119. if(r.k[i].p==0&&i!=0)
  120. {
  121. cout<<r.k[i].c;
  122. f++;
  123. }
  124. if(r.k[i].p!=0&&i!=0&&r.k[i].p!=1&&r.k[i].c==1)
  125. {
  126. if(f!=0)
  127. {
  128. cout<<" +";
  129. }
  130. cout<<"X^"<<r.k[i].p;
  131. f++;
  132. }
  133. if (r.k[i].p!=0&&i!=0&&r.k[i].p!=1&&r.k[i].c!=1)
  134. {
  135. if(f!=0)
  136. {
  137. cout<<" +";
  138. }
  139. cout<<r.k[i].c<<"X^"<<r.k[i].p;
  140. f++;
  141. }
  142. if(r.k[i].p!=0&&i!=0&&r.k[i].p==1&&r.k[i].c==1)
  143. {
  144. if(f!=0)
  145. {
  146. cout<<" +";
  147. }
  148. cout<<"X";
  149. f++;
  150. }
  151.  
  152.  
  153. }
  154. else
  155. {
  156. f++;
  157. if(r.k[i].p==0&&i==0)
  158. {
  159. cout<<r.k[i].c;
  160. f++;
  161. }
  162. if(r.k[i].p!=0&&i==0&&r.k[i].p!=1&&r.k[i].c!=-1)
  163. {
  164. cout<<" "<<r.k[i].c<<"X^"<<r.k[i].p;
  165. f++;
  166. }
  167. if(r.k[i].p!=0&&i==0&&r.k[i].p!=1&&r.k[i].c==-1)
  168. {
  169. cout<<" -"<<"X^"<<r.k[i].p;
  170. f++;
  171. }
  172. if(r.k[i].p!=0&&i==0&&r.k[i].p==1&&r.k[i].c==-1)
  173. {
  174. cout<<" -"<<"X";
  175. f++;
  176. }
  177. if(r.k[i].p!=0&&i==0&&r.k[i].p==1&&r.k[i].c!=-1)
  178. {
  179. cout<<" "<<r.k[i].c<<"X";
  180. f++;
  181. }
  182. if(r.k[i].p!=0&&i!=0&&r.k[i].p==1&&r.k[i].c!=-1)
  183. {
  184. cout<<r.k[i].c<<"X";
  185. f++;
  186. }
  187. if(r.k[i].p==0&&i!=0)
  188. {
  189. cout<<r.k[i].c;
  190. f++;
  191. }
  192. if(r.k[i].p!=0&&i!=0&&r.k[i].p!=1&&r.k[i].c==-1)
  193. {
  194. cout<<" -"<<"X^"<<r.k[i].p;
  195. f++;
  196. }
  197. if (r.k[i].p!=0&&i!=0&&r.k[i].p!=1&&r.k[i].c!=-1)
  198. {
  199. cout<<" "<<r.k[i].c<<"X^"<<r.k[i].p;
  200. f++;
  201. }
  202. if(r.k[i].p!=0&&i!=0&&r.k[i].p==1&&r.k[i].c==-1)
  203. {
  204. cout<<" -"<<"X";
  205. f++;
  206. }
  207.  
  208. }
  209.  
  210. }
  211.  
  212.  
  213. }
  214. cout<<endl;
  215.  
  216. }
  217. Polynomial Polynomial::operator+(Polynomial j)
  218. {
  219.  
  220. int v;
  221. Polynomial r;
  222. r.n=j.n+n;
  223.  
  224. for(v=0; v<r.n; v++)
  225. {
  226. if(v<n)
  227. {
  228. r.k[v].p=k[v].p;
  229. r.k[v].c=k[v].c;
  230.  
  231. }
  232. if(v>=n)
  233. {
  234. r.k[v].p=j.k[v-n].p;
  235. r.k[v].c=j.k[v-n].c;
  236.  
  237.  
  238. }
  239.  
  240.  
  241. }
  242.  
  243. return r;
  244. }
  245. Polynomial Polynomial::operator*(Polynomial h)
  246. {
  247. Polynomial r2;
  248. int i,j,o=0;
  249. r2.n=n*h.n;
  250.  
  251. for(i=0; i<n; i++)
  252. {
  253. for(j=0; j<h.n; j++)
  254. {
  255. r2.k[o].p=k[i].p+h.k[j].p;
  256. r2.k[o].c=k[i].c*h.k[j].c;
  257. o++;
  258. }
  259.  
  260.  
  261. }
  262. return r2;
  263.  
  264. }
  265. double Polynomial::valueAt(double t)
  266. {
  267. double s=0;
  268. int i;
  269. for(i=0; i<n-1; i++)
  270. {
  271. s=s+((k[i].c)*(pow(t,k[i].p)));
  272.  
  273. }
  274. double r=k[i].c*pow(t,k[i].p);
  275. double c=s+r;
  276.  
  277. return c;
  278. }
  279.  
  280. Polynomial Polynomial::sorter()
  281. {
  282. Polynomial r;
  283. int i,j;
  284. r.n=n;
  285. for(i=0; i<n; i++)
  286. {
  287. r.k[i].p=k[i].p;
  288. r.k[i].c=k[i].c;
  289.  
  290. }
  291. int g;
  292. double q;
  293. for(j=0; j<r.n; j++)
  294. {
  295. for(i=j+1; i<r.n; i++)
  296. {
  297. if(r.k[i].p<r.k[j].p)
  298. {
  299. g=r.k[i].p;
  300. r.k[i].p=r.k[j].p;
  301. r.k[j].p=g;
  302. q=r.k[i].c;
  303. r.k[i].c=r.k[j].c;
  304. r.k[j].c=q;
  305. }
  306.  
  307. }
  308.  
  309. }
  310.  
  311. return r;
  312. }
  313.  
  314.  
  315. void Polynomial::plot(double xleft,double xright)
  316. {
  317. initCanvas("Polynomial",600,600);
  318. Polynomial r;
  319. r.n=n;
  320. xright=xright;
  321. xleft=xleft;double f;
  322.  
  323. for(int i=0; i<n; i++)
  324. {
  325. r.k[i].p=k[i].p;
  326. r.k[i].c=k[i].c;
  327. }
  328. if(r.k[r.n-1].p>6) f=.10;
  329. else if(r.k[r.n-1].p>3) f=8;
  330. else f=50;
  331. for(int i=0; i<n; i++)
  332. {
  333. r.k[i].p=k[i].p;
  334. r.k[i].c=k[i].c*f/2;
  335. }
  336. Line x_axis(0,300,600,300);
  337. Line y_axis(300,0,300,600);
  338. double x=xleft;
  339.  
  340.  
  341. x=xleft;
  342. while(x<xright){
  343. Line k(x*f+300,300-r.valueAt(x),(x+.1)*f+300,300-r.valueAt(x+.1));
  344. k.imprint();
  345.  
  346. x+=.1;
  347.  
  348.  
  349. }
  350.  
  351.  
  352.  
  353.  
  354.  
  355. getClick();
  356.  
  357. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement