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

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

Восстановить пароль Регистрация
 
nikolas
0 / 0 / 0
Регистрация: 18.10.2012
Сообщений: 42
27.12.2012, 19:35     Иерархия классов.Сумма значений разных классов #1
Рассмотреть иерархию понятий "Генератор шума" , "Генератор белого шума" , "Генератор цветного шума".рассмотреть задачу формирования шума из нескольких разнотипных генераторов путем суммирования их выводов.

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

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))

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

Иерархия классов .... C++
C++ Иерархия классов
Иерархия классов C++
Иерархия классов C++
иерархия классов C++
C++ иерархия классов
Иерархия классов C++
Иерархия классов С++ C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 06:51. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru