Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.06.2010, 23:56   #1
123er4
 
Регистрация: 10.06.2010
Сообщений: 8
По умолчанию Конструктор копирования.

Нужно для задачи дописать конструктор копирования. Вся задача в условии почти решена. Собственно вот условие и как она должна выглядеть:

http://s49.radikal.ru/i124/1006/66/038c80bef977.jpg

Я вроде все сделал, но хз правильно или нет. И почему-то у меня в консоле числа выводятся от 1 до 9 по порядку, а в условии от 1 до 27 и через 3. Помогите плз!

Код:
# include <iostream>
using namespace std;
class CMyArray
{
private:
        int*arr;
        int size;
                
public:
        CMyArray(int);
        ~CMyArray(void);
/////Конструктор копирования
        CMyArray(const CMyArray &); 
 
public:
        int getElement(int);
        int getSize();
private:
        void setDefaultParam(void);
};
class ArrayIndexError
{
};
CMyArray::CMyArray(int size)
{
        this->size=size;
        this->arr=new int[this->size];
        setDefaultParam();
}
 
 
////Описание конструктора копирования
CMyArray::CMyArray(const CMyArray&ob)
{
    this->size=ob.size;
        this->arr=new int[this->size];
        setDefaultParam();
}
CMyArray::~CMyArray(void)
{
        delete this->arr;
}
int CMyArray::getElement(int index)
{
        if((index>=0)&&(index<size))
                return arr[index];
        else throw (ArrayIndexError());
}
int CMyArray::getSize ()
{
        return size;
}
void CMyArray::setDefaultParam (void)
{
for(int i=0;i<size;i++)
{
        arr[i]=i;
}
}
int main()
{
        CMyArray ar(10);
        CMyArray ar2=ar;
        for (int i=0;i<ar.getSize();i++)
                cout<<ar.getElement(i)<< " ";
        cout<<endl;
        return 0;
}

Последний раз редактировалось 123er4; 13.06.2010 в 00:50.
123er4 вне форума Ответить с цитированием
Старый 13.06.2010, 00:42   #2
Ozerich
Студент 1 курса
Форумчанин Подтвердите свой е-майл
 
Аватар для Ozerich
 
Регистрация: 27.06.2008
Сообщений: 959
По умолчанию

У тебя CMyArray::setDefaultParam заполняет массив. Напиши в ней
Код:
for(int i=0;i<size;i+=3)
 arr[i]=i;
и будет через 3

Не забывай выделять код в тег [CODE]
C++(STL, QT, WinInet) / DHTML(CSS) / JavaScript / PHP Developer
Ozerich вне форума Ответить с цитированием
Старый 13.06.2010, 00:53   #3
123er4
 
Регистрация: 10.06.2010
Сообщений: 8
По умолчанию

Цитата:
Сообщение от Ozerich Посмотреть сообщение
У тебя CMyArray::setDefaultParam заполняет массив. Напиши в ней
Код:
for(int i=0;i<size;i+=3)
 arr[i]=i;
и будет через 3
поменял в цикле я на +=3 и теперь вместо нормальных значений вылазит мусор
123er4 вне форума Ответить с цитированием
Старый 13.06.2010, 00:55   #4
Ozerich
Студент 1 курса
Форумчанин Подтвердите свой е-майл
 
Аватар для Ozerich
 
Регистрация: 27.06.2008
Сообщений: 959
По умолчанию

123er4, простой устный счет тут, мог бы и сам уже найти ошибку.
Код:
void CMyArray::setDefaultParam (void)
{
for(int i=0;i<size;i++)
        arr[i]=i * 3;
}
C++(STL, QT, WinInet) / DHTML(CSS) / JavaScript / PHP Developer
Ozerich вне форума Ответить с цитированием
Старый 13.06.2010, 01:27   #5
123er4
 
Регистрация: 10.06.2010
Сообщений: 8
По умолчанию

пасиб большое
123er4 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Конструктор копирования Superlotles Общие вопросы C/C++ 2 24.05.2010 17:39
Оптимизируем return объекта; конструктор копирования Kn793 Общие вопросы C/C++ 2 24.04.2010 20:26
классы,конструктор копирования,динамический массив экземпляров.Нужна помощь bylynka Общие вопросы C/C++ 1 30.04.2009 21:56
Конструктор PilGrim Общие вопросы C/C++ 0 16.01.2009 10:21
Конструктор копирования Djaconda Общие вопросы C/C++ 3 11.06.2008 18:54