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

Не работает конструктор при наследовании - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Объясните часть кода программы http://www.cyberforum.ru/cpp-beginners/thread746403.html
Писал лабу, помог парень, но он видимо ушёл, я не могу понять его кусок кода. Вот лаба: #include <iostream> #include <vector> #include <string> #include <algorithm> using namespace std;
C++ Первый элемент массива 1 умножить на все элементы массива 2 и вывести результат Добрый день. Прошу помочь решить вот такую вот задачку: "есть два массива, в которых границы задает пользователь. Например, один массив {3, 13, 23, 33 .....n} другой {9, 19, 29 ....m} причем шаг между числами в массивах задает пользователь. В нашем случае сейчас 10. А может быть в одном 10, а в другом 5 или еще как-то. надо сначала первый элемент массива 1 умножить на все элементы массива 2... http://www.cyberforum.ru/cpp-beginners/thread746394.html
C++ упорядочить слова в четных строках в порядке убывания в них гласных
Доброго времени суток !Помогите пожалуйста советом:cry:Не могу реализовать функцию обработки в программе.Очень нужна ваша помощь! .Вот суть задания: вводим число строк, вводим строки, обрабатываем таким образом,чтобы в четных строках слова были сортированы по мере уменьшения в них гласных букв.Слова могут разделяться пробелами и прочими знаками препинания.Вот код (сделана функция...
C++ Тело падает под действием силы тяжести
Тело падает под действием силы тяжести с нулевой начальной скорости. Движение описывается следующей системой дифференциальных уравнени Система: (как скобочку сделать не знаю) dx/dt=V dV/dt=g/1+k
C++ Построить фигуру, которая состоит из трех концентрических колец разного цвета. Фигура движется по кругу по часовой стрелке http://www.cyberforum.ru/cpp-beginners/thread746358.html
Построить фигуру, которая состоит из трех концентрических колец разного цвета. Фигура движется по кругу по часовой стрелке
C++ Поменять местами максимальный и минимальный элемент матрицы Здравствуйте. Задача вроде бы простая, но у меня возникло затруднение. Искал подобные, но свою ошибку увидеть не могу в упор. Суть задачи: дана матрица n на m. Поменять местами максимальный и минимальный элемент матрицы. Вот мой код: #include "stdafx.h" #include <iostream> using namespace std; подробнее

Показать сообщение отдельно
Tiva
94 / 94 / 1
Регистрация: 25.04.2012
Сообщений: 429

Не работает конструктор при наследовании - C++

26.12.2012, 03:16. Просмотров 329. Ответов 4
Метки (Все метки)

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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
#include <iostream>
using namespace std;
#include <locale>
#include <time.h>
#include <windows.h>
 
class TArray
{
protected:
    int *a;
    int count;
public:
    TArray();
    TArray(int _count);
    TArray(int min, int max);
    TArray(const TArray&);
    ~TArray();
    void input();
    void output();
    void input_count();
    void sort(int k);
    friend ostream& operator << (ostream&, TArray&);
    friend istream& operator >> (istream&, TArray&);
    friend TArray operator + (TArray&, TArray&);
    TArray operator =(TArray&);
};
class Operate:public TArray{
public:
    Operate(int *a, int count);
    void invert();
    void choose(int k);
Operate():TArray(){}
Operate (int _min, int _max); //Конструктор с параметрами
Operate (const Operate &);//Конструктор копирования
 
};
Operate::Operate (int _min, int _max)
{
    TArray::TArray(_min, _max);
 
}
Operate::Operate (const Operate & str):TArray(str)
{
}
//Operate::Operate(int *a, int count): TArray(min,max){}
 
void Operate::choose(int k)
{
    cout<<endl;
    for(int i=0; i<count; i++)
        if(a[i]%k==0) cout<<a[i]<<" ";
}
void Operate::invert()
{
    cout<<endl;
    //int *temp=new int [count];
    for(int i=count-1; i>=0; i--)
        cout<<a[i]<<" ";
    cout<<endl;
}
TArray::TArray(int _count)
{
    a=new int[_count];
    for (int i=0; i<_count; i++) a[i]=0;
}
TArray::TArray(const TArray& obj)
{
    if(!obj.a) a=0;
        else
            {
                a=new int [sizeof(obj.a)+1];
                //strcpy(type,obj.type);
                a=obj.a;
            }
    count=obj.count;
}
void TArray::input_count()
{
    cout<<"\nВведите кол-во элементов\n";
    cin>>count;
}
TArray::TArray()
{
    input_count();
    a=new int[count];
    for (int i=0; i<count; i++) a[i]=0;
}
TArray::TArray(int min, int max)
{
    //добавить про рандом что-то там
    srand(time(NULL));
    input_count();
 
    a=new int[count];
    for (int i=0; i<count; i++) a[i]=rand()%(max-min+1)+min;
}
TArray::~TArray()
{
    delete[] a;
}
void TArray::output()
{
    for (int i=0; i<count; i++)
        cout<<a[i]<<" ";
    cout<<endl;
}
void TArray::input()
{
    cout<<"Введите "<<count<<" элементов массива"<<endl;
    for (int i=0; i<count; i++)
        cin>>a[i];
}
void TArray::sort(int k)
{
    int buf,j=0;
    if (k==0)
    {
        do
        {
            for (int i=0; i<count; i++)
            {
                if(a[i]<a[i+1])
                {
                    buf=a[i];
                    a[i]=a[i+1];
                    a[i+1]=buf;
                }
            }
            j++;
        }
        while(j<count*count);
    }
    if (k==1)
    {
        do
        {
            for (int i=0; i<count-1; i++)
            {
                if(a[i]>a[i+1])
                {
                    buf=a[i];
                    a[i]=a[i+1];
                    a[i+1]=buf;
                }
            }
            j++;
        }
        while(j<count*count);
    }
}
//===============================================ПЕРЕГРУЗКА ОПЕРАТОРОВ
TArray operator + (TArray& Q, TArray& P)
{
    for (int i=0; i<Q.count; i++)
    {
        Q.a[i]+=P.a[i];
    }
    return Q;
}
ostream& operator << (ostream& stream, TArray& obj)
{
    cout<<endl;
    for (int i=0; i<obj.count; i++)
        stream<<obj.a[i]<<" ";
    return stream;
}
istream& operator >> (istream& stream, TArray& obj)
{
    cout <<"\nВведите элементы массива\n";
    for (int i=0; i<obj.count; i++)
        stream >> obj.a[i];
    return stream; // возвращаем поток
}
TArray TArray::operator =(TArray& P)
{
    for (int i=0; i<P.count; i++)
        a[i]=P.a[i];
    return *this;
}
 
int main(void)
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    Operate a(0,10);
    cout<<a;
    a.invert();
    a.choose(2);
    system("pause");
 
}
почему элементы не заполняются рандомом от 0 до 10?
если объявлять базовым классом(TArray) то работает.
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru