Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
nikolas
0 / 0 / 0
Регистрация: 18.10.2012
Сообщений: 42
#1

Иерархия классов.Сумма значений разных классов - C++

27.12.2012, 19:35. Просмотров 328. Ответов 0
Метки нет (Все метки)

Рассмотреть иерархию понятий "Генератор шума" , "Генератор белого шума" , "Генератор цветного шума".рассмотреть задачу формирования шума из нескольких разнотипных генераторов путем суммирования их выводов.

вот мой код...все работает... но нудно просуммировать их выводы.
подскажите как это реализовать... я не знаю как суммировать значения базового класса и дочернего класса.

noise_generator.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
//noise_generator.h
//
#ifndef noise_generator_h
#define noise_generator_h
#include <iostream>
 
class noise_generator
{
public:
    noise_generator();                                                                  //Конструктор..................Konstryktor
    noise_generator(unsigned A,unsigned yc,unsigned t);                                 //Перегруженные функции........Peregryzka fynkcii
    int amplityde(int z);                                                               //Масштабирвание амплитуды.....Masshtabirovanie amplitydi
    int mean(int z);                                                                    //Сдвиг среднего значения......Sdvig srednego znacheniya
    int delta_t(int z);                                                                 //Интервал дискретизации.......Izmenenie intervala diskrecii
    ~noise_generator();                                                                 //Деструктор...................Distruktor
    virtual int consider(int on_off);
    friend const bool sum(const noise_generator &white_noise, const noise_generator &color_noise, noise_generator &result_noise);
    noise_generator(const noise_generator& copy);                                       //Перегруженные функции........Peregryzka fynkcii
    friend std::ostream& operator<< (std::ostream& os, const noise_generator& noize);   //Потоковый вывод..............Potokovii vvod
    friend std::istream& operator>> (std::istream& is, noise_generator& noize);         //Потоковый ввод...............potokovii vivod
    noise_generator& operator = (noise_generator& equals);                              //Перегрузка присваивания......Peregryzka prisvaivaniya
    int Return_A(void);
    int Return_yc(void);
    int Return_t(void);
protected:
    int A;                  //Амплитуда..................................Amplityda
    int yc;                 //Среднее значение величины шума для y.......Srednee znachenie dlya y
    int t;                  //Интервал дискреции.........................Interval diskrecii
};
 
inline int noise_generator:: Return_A(void)
{
  return A;
}
inline int noise_generator:: Return_yc(void)
{
  return yc;
}
inline int noise_generator:: Return_t(void)
{
  return t;
}
 
#endif
noise_generator.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
//noise_generator.cpp
//
#include "noise_generator.h"
#include <iostream>
#include <stdlib.h>
#include <cstdlib>
#include <ctime>
#include <random>
 
using namespace std;
 
 noise_generator::noise_generator()                                                 
 : A(0), yc(0), t(0)
{
}
 
noise_generator::~noise_generator()                                                 
{
}
 
noise_generator::noise_generator(unsigned A,unsigned yc,unsigned t)         //Перегруженные функции........Peregryzka fynkcii
: A(A),yc(yc),t(t)
{
}
 
noise_generator :: noise_generator(const noise_generator& copy)             //Перегруженные функции........Peregryzka fynkcii   
: A(copy.A), yc(copy.yc), t(copy.t)
{
}
 
int noise_generator :: consider(int on_off)                                     
{
    if(on_off==1)
    {
        int yn;
        srand( (unsigned)time( NULL ) );
        int n=rand()%100;
        yn = yc+A*(n*t);
        return yn;
    }
    else
    {
        return 0;
    }
}
 
int noise_generator :: amplityde(int z)
{
    return A=A*z;
}
 
int noise_generator :: mean(int z)
{
    return yc=yc+z;
}
 
int noise_generator :: delta_t(int z)
{
    return t=z;
}
 
std::ostream& operator<< (std::ostream& os, const noise_generator& noize)               
{
    os <<noize.A <<' '<< noize.yc <<' '<< noize.t;
    return os;
}
 
std::istream& operator>> (std::istream& is, noise_generator& noize)                     
{
    is >> noize.A >> noize.yc >> noize.t;
    return is;
}
 
noise_generator& noise_generator::operator = ( noise_generator& equals)         //Перегрузка присваивания......Peregryzka prisvaivaniya
{
    A=equals.A;         //Амплитуда..................................Amplityda
    yc=equals.yc;       //Среднее значение величины шума для y.......Srednee znachenie dlya y
    t=equals.t;         //Интервал дискреции.........................Interval diskrecii
    return *this;
}
color_noise.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//color_noise
//
#ifndef color_noise_h
#define color_noise_h
#include "noise_generator.h"
 
//class noise_generator;
 
class color_noise:public noise_generator
{
public:
    color_noise();
    int consider(int on_off);
    color_noise(unsigned A,unsigned yc,unsigned t);
private:
    int color_sum;
};
 
#endif
color_noise.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
//color_noise
//
#include "color_noise.h"
#include <iostream>
#include <stdlib.h>
#include <cstdlib>
#include <ctime>
#include <random>
using namespace std;
 color_noise::color_noise()
     :noise_generator (A,yc,t),color_sum(0)
 {
 }
 
 color_noise :: color_noise(unsigned A,unsigned yc,unsigned t)
     :noise_generator(A, yc, t),color_sum(0)
{
}
 
int color_noise :: consider(int on_off)                                     
{
    if(on_off==1)
    {
        int yn;
        srand( (unsigned)time( NULL ) );
        int n=rand()%100;
        yn = yc+A*(n*t);
        cout<<"yn:"<<yn<<endl;
        cout<<"color_sum:"<<color_sum<<endl;
        color_sum=color_sum+yn;
        return color_sum;
    }
    else
    {
        return 0;
    }
 
}
тестовая программа:
main.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
//main.cpp
//
#include "noise_generator.h"
#include "color_noise.h"
#include <iostream>
#include <sstream>
 
using namespace std;
 
int main(void)
{   
    unsigned A,yc,t;
    int z,on_off=0;
    noise_generator generator;
    color_noise jets;
 
    cout<<"__Noise Generator__"<<endl;
    cout<<"Enter Amplitude : ";cin>>A;
    cout<<"Enter Mean      : ";cin>>yc;
    cout<<"Enter Delta t   : ";cin>>t;
 
    noise_generator gNoise(A,yc,t);
    color_noise cNoise(A,yc,t);
    ostringstream os;
    os << gNoise;
    os << cNoise;
    generator=gNoise;
    jets=cNoise;
    while(1) 
    {
        cout<<"\nMenu:";
        cout<<"\n1.GENERATOR ON OFF\n2.AMPLITUDE SCALING\n3.THE SHIFT MEAN\n4.ITERVAL DISCRETION\n5.CONSIDER\n6.COLOR_CONSIDER\n7.ABOUT\n8.EXIT\n";
        int key;
        cin>>key;
        if(key>8||key<=0)
        {
            cout<<"Error!!";
        }
        switch (key)
        {
        case 1:
            cout<<"\n1.ON\n0.OFF\n";
            cin>>on_off;
            generator.consider(on_off);
            jets.consider(on_off);
            if(on_off==1){cout<<"Generator on\n";}
            if(on_off==0){cout<<"Generator off\n";}
            break;
        case 2:
            cout <<"\nEnter a scaling factor: ";
            cin >>z;
            cout<<"Amplitude: "<<generator.amplityde(z) << endl;
            generator.amplityde(z);
            jets.amplityde(z);
            break;
        case 3:
            cout <<"\nEnter the shift: ";
            cin >>z;
            cout <<"Mean: " << generator.mean(z) << endl;
            generator.mean(z);
            jets.mean(z);
            break;
        case 4:
            cout <<"\nEnter the delta_t: ";
            cin >>z;
            cout <<"Delta_t: " << generator.delta_t(z) << endl;
            generator.delta_t(z);
            jets.delta_t(z);
            break;
        case 5:
            cout << "\nWhite noise\nyn=" <<generator.consider(on_off) << endl;
            break;
        case 6:
            cout << "\nColor noise\nyn=" <<jets.consider(on_off) <<endl;
            break;
        case 7:
            cout <<generator<<endl;
            cout <<"-------------"<<endl;
            cout <<jets<<endl;
            break;
        case 8:
            return 0;
        }
    }
    return 0;
}



нужно суммировать color_sum( из модуля color.cpp, функции consider(int on_off)) и yn (из модуля noise_generator, функции consider(int on_off))

завтра сдавать...
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.12.2012, 19:35
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Иерархия классов.Сумма значений разных классов (C++):

Разработать иерархию классов, демонстрирующее работу с коллекцией объектов разных классов - C++
Задание: Разработать в соответствии с индивидуальным заданием иерархию классов и приложение, демонстрирующее работу с коллекцией объектов...

Иерархия классов С++ - C++
В общем, программа построена правильно(в приложениях фото задания). Но проблема в том, что &quot;х&quot; - это закрытый член класса и он не...

Иерархия классов .... - C++
Добрый вечер Всем !!! ))) У меня возникли некоторые трудности с написанием программы, имеющей следующие особенности: 1) Определить...

Иерархия классов - C++
Пацаны срочно нужна ваша помощь!! Надо создать простую программу в с++ на тему БИБЛИОТЕКА, чтобы там обрабатывались ниже приведённые...

Иерархия классов - C++
Помогите, пожалуйста, надо создать иерархию классов: класс строка -&gt; класс строка-идентификатор -&gt; битовая строка отдельные объекты...

Иерархия классов - C++
Доброго времени суток, форумчане! Имеется полиморфный класс окна SubWindow class SubWindow { public: SubWindow(); ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.12.2012, 19:35
Привет! Вот еще темы с ответами:

иерархия классов - C++
Разработать иерархию классов, описывающих следующие понятия Растение- Дерево , лес что делать вообще не представляю((

иерархия классов - C++
помогите с классами, базовый класс-ювелирное украшение производный телевизор и стиральная машина в классе не должно быть виртуальных...

Иерархия классов - C++
Порядок выполнения работы. 1. Создать проект, который содержит консольную программу Win32. 2. Определить иерархию классов (в...

Иерархия классов - C++
Добрый вечер. Такое задание. Реализовать иерархию понятий &quot;Студент&quot; , &quot;Группа&quot; , &quot;Факультет&quot; . Группу представить совокупностью...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru