Advertisement
ithoran

strukLab1Z3

Mar 13th, 2016
540
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.69 KB | None | 0 0
  1. // Polinom.h
  2. #pragma once
  3. #include <iostream>
  4. using namespace std;
  5.  
  6. class Polinom {
  7.     double *a;
  8.     int s;
  9. public:
  10.     Polinom();
  11.     Polinom(int s);
  12.     ~Polinom();
  13.     Polinom(const Polinom &x);
  14.     void postaviK(int *s, double *niz, int n);
  15.     void stampaj();
  16.     friend Polinom mul(Polinom &a, Polinom &b);
  17.     void operator=(const Polinom& x);
  18. };
  19.  
  20. //Polinom.cpp
  21. #include "Polinom.h"
  22.  
  23. Polinom::Polinom(int s) {
  24.     this->s = s;
  25.     a = new double[this->s + 1]();
  26. }
  27.  
  28. Polinom::Polinom() : Polinom(2) {}
  29.  
  30. Polinom::~Polinom() {
  31.     if (a) {
  32.         delete[] a;
  33.     }
  34. }
  35.  
  36. Polinom::Polinom(const Polinom &x) {
  37.     s = x.s;
  38.     a = new double[s + 1]();
  39.     for (int i = 0; i <= s; i++)
  40.         this->a[i] = x.a[i];
  41. }
  42.  
  43. void Polinom::postaviK(int *s, double *niz, int n) {
  44.     for (int i = 0; i < n; i++) {
  45.         if (s[i] <= this->s && s[i] >= 0)
  46.             a[s[i]] = niz[i];
  47.     }
  48. }
  49.  
  50. void Polinom::stampaj() {
  51.     cout.precision(10);
  52.     for (int i = s; i > 0; i--) {
  53.         if (a[i] != 0)
  54.             cout << " " << showpos << a[i] << " * x^" << noshowpos << i;
  55.     }
  56.     if (a[0] != 0)
  57.         cout << " " << showpos << a[0];
  58.     cout << endl;
  59. }
  60.  
  61. Polinom mul(Polinom &a, Polinom &b) {
  62.     Polinom x(a.s + b.s);
  63.     for (int i = 0; i < a.s + 1; i++) {
  64.         for (int j = 0; j < b.s + 1; j++) {
  65.             x.a[i + j] = a.a[i] * b.a[j] + x.a[i + j];
  66.         }
  67.     }
  68.     return x;
  69. }
  70.  
  71. void Polinom::operator=(const Polinom &x) {
  72.     if (a) {
  73.         delete[] this->a;
  74.     }
  75.     s = x.s;
  76.     a = new double[s + 1]();
  77.     for (int i = 0; i <= s; i++)
  78.         this->a[i] = x.a[i];
  79. }
  80.  
  81. //main
  82. void main() {
  83.     Polinom x(4);
  84.     int exp[3], e = 3;
  85.     double niz[3];
  86.     for (int i = 0; i < 3; i++) {
  87.         cin >> exp[i] >> niz[i];
  88.     }
  89.     x.postaviK(exp, niz, e);
  90.     x.stampaj();
  91.     Polinom g;
  92.     g = x;
  93.     Polinom z;
  94.     z = mul(x, g);
  95.     z.stampaj();
  96. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement