Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /******************************************************************************
- Задание:
- реализовать класс С++, моделирующий ФМ сигнал вида
- s(t) = a*cos(w*t + b*f(t)),
- где f(t) - модулирующий сигнал, |f(t)|<=1
- Коэффициенты a, b, w и функцию f(t) задавать в момент инициализации сигнала
- Генерировать массив N (задать с клавиатуры) сигналов одинаковой модулирующей частоты w.
- Для каждого сигнала получить энергию на длительности 10 с.
- *******************************************************************************/
- #include <iostream>
- #include <math.h>
- using namespace std;
- double fun(double x) {
- return x / 100;
- }
- class FM_signal {
- private:
- double a = 0, w = 0, b = 0;
- double (*f) (double);
- public:
- FM_signal(double, double, double, double (*f) (double));
- double get(double);
- };
- int main()
- {
- int n;
- double w;
- double *a = new double[n];
- double *b = new double[n];
- // Получаем необходимые данные
- cout << "Please, enter n: ";
- cin >> n;
- cout << "Please, enter w: ";
- cin >> w;
- cout << "Please, enter a: " << endl;
- for (int i = 0; i < n; i++)
- {
- cout << " #" << i + 1 << ": ";
- cin >> a[i];
- }
- cout << "Please, enter b: " << endl;
- for (int i = 0; i < n; i++)
- {
- cout << " #" << i + 1 << ": ";
- cin >> b[i];
- }
- // Выделение памяти
- FM_signal* mass = static_cast<FM_signal*>(operator new[] (n * sizeof(FM_signal)));
- // Инициализация каждого элемента массива
- for (int i = 0; i < n; i++)
- {
- new (mass + i) FM_signal(a[i], b[i], w, fun);
- }
- // Выводим на экран необходимые значения
- for (double t = 0; t <= 10; t += 0.25)
- {
- cout << "t = " << t << "c." << endl;
- for (int i = 0; i < n; i++)
- cout << " Signal #"<< i+1 << ": " << mass[i].get(t) << endl;
- cout << endl;
- }
- return 0;
- }
- FM_signal::FM_signal(double a, double b, double w, double (*f) (double)) {
- this -> a = a;
- this -> b = b;
- this -> w = w;
- this -> f = f;
- }
- double FM_signal::get(double t) {
- return this -> a * cos(this -> w * t + this -> b * this->f(t));
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement