Advertisement
ilyakanyshev

Ya ebal

Nov 17th, 2020 (edited)
552
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.54 KB | None | 0 0
  1. /******************************************************************************
  2.  
  3. Задание:
  4. реализовать класс С++, моделирующий ФМ сигнал вида
  5. s(t) = a*cos(w*t + b*f(t)),
  6. где f(t) - модулирующий сигнал, |f(t)|<=1
  7. Коэффициенты a, b, w и функцию f(t) задавать в момент инициализации сигнала
  8. Генерировать массив N (задать с клавиатуры) сигналов одинаковой модулирующей частоты w.
  9. Для каждого сигнала получить энергию на длительности 10 с.
  10.  
  11. *******************************************************************************/
  12. #include <iostream>
  13. #include <math.h>
  14.  
  15. using namespace std;
  16.  
  17. double fun(double x) {
  18.     return x / 100;
  19. }
  20.  
  21. class FM_signal {
  22.     private:
  23.         double a = 0, w = 0, b = 0;
  24.         double (*f) (double);
  25.     public:
  26.         FM_signal(double, double, double, double (*f) (double));
  27.         double get(double);
  28. };
  29.  
  30. int main()
  31. {
  32.     int n;
  33.     double w;
  34.     double *a = new double[n];
  35.     double *b = new double[n];
  36.     // Получаем необходимые данные
  37.     cout << "Please, enter n: ";
  38.     cin >> n;
  39.     cout << "Please, enter w: ";
  40.     cin >> w;
  41.     cout << "Please, enter a: " << endl;
  42.     for (int i = 0; i < n; i++)
  43.     {
  44.         cout << "  #" << i + 1 << ": ";
  45.         cin >> a[i];
  46.     }
  47.     cout << "Please, enter b: " << endl;
  48.     for (int i = 0; i < n; i++)
  49.     {
  50.         cout << "  #" << i + 1 << ": ";
  51.         cin >> b[i];
  52.     }
  53.    
  54.     // Выделение памяти
  55.     FM_signal* mass = static_cast<FM_signal*>(operator new[] (n * sizeof(FM_signal)));
  56.    
  57.     // Инициализация каждого элемента массива
  58.     for (int i = 0; i < n; i++)
  59.     {
  60.         new (mass + i) FM_signal(a[i], b[i], w, fun);
  61.     }
  62.    
  63.     // Выводим на экран необходимые значения
  64.     for (double t = 0; t <= 10; t += 0.25)
  65.     {
  66.         cout << "t = " << t << "c." << endl;
  67.         for (int i = 0; i < n; i++)
  68.             cout << "  Signal #"<< i+1 << ": " << mass[i].get(t) << endl;
  69.         cout << endl;
  70.     }
  71.     return 0;
  72. }
  73.  
  74. FM_signal::FM_signal(double a, double b, double w, double (*f) (double)) {
  75.     this -> a = a;
  76.     this -> b = b;
  77.     this -> w = w;
  78.     this -> f = f;
  79. }
  80. double FM_signal::get(double t) {
  81.     return this -> a * cos(this -> w * t + this -> b * this->f(t));
  82. }
  83.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement