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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.06.2010, 16:49   #1
boston
 
Регистрация: 01.06.2010
Сообщений: 5
По умолчанию Классы, динамический массив, C++

Само задание:
Создать 2 объекта разработанного класса. Класс – динамический вектор (одномерный массив). В результате выполнения программы в первом объекте должны содержаться все четные, а во втором все нечетные числа исходных векторов. Содержимое объектов (их векторов) до и после обмена вывести на экран.

В чем проблема:
Меня почему-то ставит в ступор задание. А именно, как реализовать обмен содержимым между двумя объектами одного и того же класса. Как вариант, можно реализовать буферные массивы, но это будет достаточно корявой реализацией.
Не чeрез vector.

Недоделанный код:
Код:
#include <iostream>
#include <locale>
//#include <malloc.h>

 
using namespace std;

int chet=0, nechet=0;

class Array
{
private:
    int size;
    int* data;
public:
	Array(){}
	Array(int asize) {
		size=asize;
		data=new int[size];
		if(data) cout<<"Массив инициализирован\n";
		else cout<<"Не хватает памяти\n";
	}
	Array(Array const& copy){
		cout<<"Копирование";
	}
	~Array(){
        delete[] data;
        cout<<"Объект уничтожен\n";
        }
	void fill_random() {
	for(int i=0;i<size;i++){
		*(data+i)=(double)rand() / (RAND_MAX + 1) * (100 - (-100))+ (-100); //рандомные числа от -100 до 100
		}
	}

	/*void reall(bool ch) {
		if (chet) data = (int*)realloc(data, chet*sizeof(int));	//расширение, сужение массива (нереализовано)
		else data = (int*)realloc(data, nechet*sizeof(int));
		
	}*/

	void print(){
		for(int i=0;i<size;i++){
		cout<<*(data+i)<<" ";
		}
		cout<<endl;
	}

	void count(){
		for(int i=0;i<size;i++){
			if(*(data+i)%2==0) chet++;
			else nechet++;
		}
	}

	void replace(){
		int *tmp;
		tmp=new int[chet];
		int *tmp2;
		tmp2=new int[nechet];		

		delete[] tmp;
		delete[] tmp2;
	}
	
};
 
int main()
{
	bool ch=true;
	setlocale(LC_ALL,"Russian");
           Array first(10);
	Array second(10);
	first.fill_random();
	second.fill_random();
	first.print();
	second.print();
	first.count();
	second.count();
	/*first.reall(ch);
	ch=false;
	second.reall(ch);*/
	cout<<chet<<"  "<<nechet<<endl;

}
Спасибо отозвавшимся
boston вне форума Ответить с цитированием
Старый 01.06.2010, 17:09   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
В результате выполнения программы
А что за "обмен" имеется ввиду?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 01.06.2010, 17:31   #3
boston
 
Регистрация: 01.06.2010
Сообщений: 5
По умолчанию

Если бы я сам точно понял, что от меня хотят)
Я так понимаю, что после отработки программы в первом объекте класса должны содержаться все четные элементы из векторов 1 и 2 класса,
т.е, например, в первом векторе объекта {2,7,3,6}, во втором {5,7,4,3}
результат: в первом {2,6,4}, во втором {7,3,5,7,3}
boston вне форума Ответить с цитированием
Старый 01.06.2010, 17:34   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Хм... т.е. в цикле вводятся числа, и в зависимости оттого какое число попадают в нужные объекты?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 01.06.2010, 18:12   #5
boston
 
Регистрация: 01.06.2010
Сообщений: 5
По умолчанию

эмм, нет. Создается два объекта одного класса. Векторы этих двух объектов забиваются числами. После этого они обрабатываются так, чтобы в первом векторе объекта оказались все четные числа обоих векторов, во втором: все нечетные числа обоих векторов.
Вроде это имеется ввиду в задании
boston вне форума Ответить с цитированием
Старый 04.06.2010, 13:48   #6
boston
 
Регистрация: 01.06.2010
Сообщений: 5
По умолчанию

В общем, сделал через темповые массивы и дружественную функцию, что конечно коряво.
Спасибо за уделенное время
boston вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамический массив Ueshua Общие вопросы C/C++ 7 28.12.2009 09:45
Динамический массив Vito89 Помощь студентам 1 20.10.2009 01:55
Динамический массив Vito89 Общие вопросы Delphi 3 20.10.2009 01:20
классы,конструктор копирования,динамический массив экземпляров.Нужна помощь bylynka Общие вопросы C/C++ 1 30.04.2009 21:56
Динамический массив. Mickle Помощь студентам 9 21.06.2007 20:31