Advertisement
Guest User

Untitled

a guest
Apr 24th, 2019
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.00 KB | None | 0 0
  1. #include "Hedder.h"
  2.  
  3. Vec::Vec(){
  4. }
  5.  
  6. Vec::~Vec(){
  7. a.clear();
  8. }
  9.  
  10. void Vec::insert(Polynom x){
  11. a.push_back(x);
  12. }
  13.  
  14. void Vec::erasee(int x){
  15. a.erase(a.begin() + x);
  16. }
  17.  
  18. void Vec::reversee(std::vector<Polynom> a){
  19. reverse(a.begin(), a.end());
  20. }
  21. void input(Polynom a, string s, Arr n){
  22. cin >> s;
  23. cin >> a;
  24. n.s = s;
  25. n.a = a;
  26. }
  27. //Polynom Vec::&operator[](int x){
  28. // return a[x];
  29. //}
  30. Polynom::Polynom()
  31. {
  32. try{
  33. koef = NULL;
  34. }
  35. catch(int a){
  36. cout << "no memory";
  37. }
  38. }
  39.  
  40. Polynom::~Polynom()
  41. {
  42. try{
  43. delete[]koef;
  44. }
  45. catch(int a){
  46. cout << "no poly";
  47. }
  48. }
  49. Polynom::Polynom(int an)
  50. {
  51. try{
  52. int i;
  53. n = an;
  54. koef = new double[n + 1];
  55. for (i = 0; i <= n; i++)
  56. {
  57. koef[i] = 0;
  58. }
  59. }
  60. catch(int a){
  61. cout << "no memory";
  62. }
  63. }
  64. Polynom::Polynom(const Polynom &f)
  65. {
  66. try{
  67. n = f.n;
  68. koef = new double[n + 1];
  69. for (int i = 0; i <= n; i++)
  70. koef[i] = f.koef[i];
  71. }
  72. catch(int a){
  73. cout << "no memory";
  74. }
  75. }
  76. int Polynom::getn()
  77. {
  78. return n;
  79. }
  80. double Polynom::getkoef(int i)
  81. {
  82. try{
  83. if (i <= n)
  84. return koef[i];
  85. else
  86. return 0.0;
  87. }
  88. catch(int a){
  89. cout << "error";
  90. return a;
  91. }
  92. }
  93. double Polynom::sum(){
  94. try{
  95. int ans = 0;
  96. for(int i = 0; i <= n; i++){
  97. ans += koef[i];
  98. }
  99. return ans;
  100. }
  101. catch(int a){
  102. cout << "error";
  103. return a;
  104. }
  105. }
  106. Polynom Polynom::operator-(const Polynom &t) //оператор вычитания А-В
  107. {
  108. try{
  109. int i;
  110. if (n >= t.n)//А>B
  111. {
  112. Polynom Z = *this;
  113. for (i = 0; i <= t.n; i++)
  114. Z.koef[i] = koef[i] - t.koef[i];
  115. return Z;
  116. }
  117. else//B>A
  118. {
  119. Polynom Z(t.n);
  120. for (i = 0; i <= n; i++)
  121. Z.koef[i] = -t.koef[i] + koef[i];
  122. for (i = n + 1; i <= t.n; i++)
  123. Z.koef[i] = -t.koef[i];
  124. return Z;
  125. }
  126. }
  127. catch(int a){
  128. cout << "error";
  129. return a;
  130. }
  131. }
  132. Polynom Polynom::operator+(const Polynom &t)//оператор сложения A+B
  133. {
  134. try{
  135. int i;
  136. if (n >= t.n)//A>B
  137. {
  138. Polynom Z=*this;
  139. for (i = 0; i <= n; i++)
  140. Z.koef[i] = koef[i] + t.koef[i];
  141. return Z;
  142. }
  143. else//A<B
  144. {
  145. Polynom Z=t;
  146. for (i = 0; i <= n; i++)
  147. Z.koef[i] = t.koef[i] + koef[i];
  148. return Z;
  149. }
  150. }
  151. catch(int a){
  152. cout << "error";
  153. return a;
  154. }
  155. }
  156. Polynom Polynom::operator*(const Polynom &t)//оператор умножения А*В
  157. {
  158. try{
  159. int i,j;
  160. Polynom Y(n+t.n);
  161. for (i = 0; i <= n; i++)
  162. for (j = 0; j <= t.n; j++)
  163. Y.koef[i + j] += koef[i]*t.koef[j];
  164. return Y;
  165. }
  166. catch(int a){
  167. cout << "error";
  168. return a;
  169. }
  170. }
  171. Polynom Polynom::operator = (const Polynom &t)
  172. {
  173. try{
  174. if(this!=&t)
  175. {
  176. delete[] koef;
  177. n = t.n;
  178. koef = new double[n + 1];
  179. for (int i = 0; i <= n; i++)
  180. koef[i] = t.koef[i];
  181. }
  182. return *this;
  183. }
  184. catch(int a){
  185. cout << "error";
  186. return a;
  187. }
  188. }
  189. istream &operator>>(istream &s, Polynom &c)// перегруженный оператор ввода
  190. {
  191. int i;
  192. for (i = 0; i <= c.n; i++)
  193. {
  194. s >> c.koef[i];
  195. }
  196. return s;
  197. }
  198. ostream &operator<<(ostream &s, const Polynom &c)
  199. {
  200. int i, n=0;
  201. for (i = 0; i <= c.n; i++)
  202. {
  203. if (c.koef[i] != 0)
  204. n++;
  205. }
  206. if (n != 0)
  207. {
  208. if (c.koef[0] != 0)
  209. {
  210. s << c.koef[0];
  211. }
  212. for (i = 1; i <= c.n; i++)
  213. {
  214. if (c.koef[i] < 0)
  215. {
  216. if(c.koef[i]!=-1)
  217. s << c.koef[i] << "X^" << i;
  218. else
  219. s << "-" << "X^" << i;
  220. }
  221. else
  222. {
  223. if (c.koef[i] != 0)
  224. {
  225. if(c.koef[i] != 1)
  226. s << "+" << c.koef[i] << "X^" << i;
  227. else
  228. s<< "+" << "X^" << i;
  229. }
  230. }
  231. }
  232. s << '\n';
  233. }
  234. else
  235. {
  236. s << 0;
  237. }
  238. return s;
  239. }
  240. Arr::Arr()
  241. {
  242. try{
  243. a.koef = NULL;
  244. string s;
  245. }
  246. catch(int a){
  247. cout << "no memory";
  248. }
  249. }
  250. Arr::Arr(int an)
  251. {
  252. try{
  253. string s;
  254. int i;
  255. n = an;
  256. a.koef = new double[n + 1];
  257. for (i = 0; i <= n; i++)
  258. {
  259. a.koef[i] = 0;
  260. }
  261. }
  262. catch(int a){
  263. cout << "no memory";
  264. }
  265. }
  266. Arr::~Arr()
  267. {
  268. try{
  269. delete []a.koef;
  270. s.clear();
  271. }
  272. catch(int a){
  273. cout << "no poly";
  274. }
  275. }
  276. istream &operator>>(istream &s, Arr &c)// перегруженный оператор ввода
  277. {
  278. s >> c.s;
  279. s >> c.a;
  280. // return c;
  281. return s;
  282. }
  283. ostream &operator<<(ostream &na, const Arr &c)
  284. {
  285. na << c.s << endl;
  286. int i, n=0;
  287. for (i = 0; i <= c.a.n; i++)
  288. {
  289. if (c.a.koef[i] != 0)
  290. n++;
  291. }
  292. if (n != 0)
  293. {
  294. if (c.a.koef[0] != 0)
  295. {
  296. na << c.a.koef[0];
  297. }
  298. for (i = 1; i <= c.a.n; i++)
  299. {
  300. if (c.a.koef[i] < 0)
  301. {
  302. if(c.a.koef[i]!=-1)
  303. na << c.a.koef[i] << "X^" << i;
  304. else
  305. na << "-" << "X^" << i;
  306. }
  307. else
  308. {
  309. if (c.a.koef[i] != 0)
  310. {
  311. if(c.a.koef[i] != 1)
  312. na << "+" << c.a.koef[i] << "X^" << i;
  313. else
  314. na<< "+" << "X^" << i;
  315. }
  316. }
  317. }
  318. na << '\n';
  319. }
  320. //
  321. else
  322. {
  323. na << 0;
  324. }
  325. return na;
  326. }
  327. double Arr::sum(){
  328. try{
  329. int ans = 0;
  330. for(int i = 0; i <= n; i++){
  331. ans += a.koef[i];
  332. }
  333. return ans;
  334. }
  335. catch(int a){
  336. cout << "error";
  337. return a;
  338. }
  339. }
  340.  
  341. int Arr::size(){
  342. return s.size();
  343. }
  344. Polynom Arr::operator+(const Arr &t)//оператор сложения A+B
  345. {
  346. return (this->a + t.a);
  347. }
  348. Polynom Arr::operator-(const Arr &t)//оператор вычитания A-B
  349. {
  350. return (this->a - t.a);
  351. }
  352. Polynom Arr::operator*(const Arr &t)//оператор умножения A*B
  353. {
  354. return (this->a * t.a);
  355. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement