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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.08.2013, 14:00   #1
mixon-21
Я только Учусь
Форумчанин
 
Аватар для mixon-21
 
Регистрация: 06.03.2013
Сообщений: 193
По умолчанию динамический масив

подскажите пожалуста где ошибка

Код:
#include <iostream>
#include <conio.h>
#include <time.h>
using namespace std;
class myMas
{
public:
myMas();
~myMas();

private:
int **size;
int m;
};

myMas::myMas()
{
	srand(time(NULL));
int **size=new int*[10];
for(int i=0;i<10;i++)
{
	size[i]=new int [i];
	cout<<size[i];
}
}

myMas::~myMas()
{
for(int i=0;i<10;i++)
{
delete [] size[i];
}
delete [] size;
}

void main()
{
	myMas ekz;
	ekz.~myMas();
system ("pause");
}
mixon-21 вне форума Ответить с цитированием
Старый 26.08.2013, 14:22   #2
Helloween
Форумчанин
 
Регистрация: 24.04.2012
Сообщений: 300
По умолчанию

Код:
ekz.~myMas();
Деструктор так не вызывают, он сам вызовется в данном случае.

Код:
cout<<size[i];
Вы пытаетесь вывести массив.
Помог? Оставляем отзыв =)
Helloween вне форума Ответить с цитированием
Старый 26.08.2013, 14:27   #3
mixon-21
Я только Учусь
Форумчанин
 
Аватар для mixon-21
 
Регистрация: 06.03.2013
Сообщений: 193
По умолчанию

Цитата:
Вы пытаетесь вывести массив.
Да пытаюсь вывести на екран , а как правильно???

все ровно ошибка

Код:
#include <iostream>
#include <conio.h>
#include <time.h>
using namespace std;
class myMas
{
public:
myMas();
~myMas();

private:
int **size;
int m;
};

myMas::myMas()
{
	srand(time(NULL));
int **size=new int*[10];
for(int i=0;i<10;i++)
{
	size[i]=new int [i];
	cout<<size[i];
}
}

myMas::~myMas()
{
for(int i=0;i<10;i++)
{
delete [] size[i];
}
delete [] size;
}

void main()
{
	myMas ekz;
	
system ("pause");
}

Последний раз редактировалось mixon-21; 26.08.2013 в 14:31.
mixon-21 вне форума Ответить с цитированием
Старый 26.08.2013, 14:31   #4
Helloween
Форумчанин
 
Регистрация: 24.04.2012
Сообщений: 300
По умолчанию

Код:
srand(time(NULL));
int **size=new int*[10];
for(int i=0;i<10;i++)
{
	size[i]=new int [i];
        for(int j =0 ; j < i; j++)
       {
          size[i][j] = rand()%10; 
	  cout<<size[i][j];
       }
}
}
Помог? Оставляем отзыв =)
Helloween вне форума Ответить с цитированием
Старый 26.08.2013, 15:10   #5
Helloween
Форумчанин
 
Регистрация: 24.04.2012
Сообщений: 300
По умолчанию

Код:
#include "stdlib.h"
#include "iostream.h"
#include "time.h"
#include "iomanip.h"

template <typename T>
class new_allocator
{
public:
	static T* allocate(size_t size)
	{
		_arr = true;
		return new T[size];
	}
	static T* allocate()
	{
		return new T();
	}
	static void deallocate(T* ptr)
	{
		if(_arr)
			delete [] ptr;
		else
			delete ptr;	
    }
private:
	static bool _arr;		
};
template <typename T>
bool new_allocator<T>::_arr = false;

template
<
	typename T,
	template <class> class allocator_
>
class TArr
{
public:
	TArr() : _arr(NULL), _size(0) {}
	TArr(size_t size) : _size(size)
	{
	   _arr = allocator_<T*>::allocate(size);
	   srand(time(NULL));
	   for(size_t i = 0; i < size; i++)
	   {
			_arr[i] = allocator_<T>::allocate(size);
			for(size_t j = 0; j < size; j++)
				_arr[i][j] = rand()%100 + 1;
       }
	}
	
	TArr(const TArr& ra)
	{
		operator=(ra);
	}

	TArr& operator= (const TArr& ra)
	{
		free();
		_arr = allocator_<T*>::allocate(ra._size);
		_size = ra._size;
		for(size_t i = 0; i < _size; i++)
		{
			_arr[i] = allocator_<T>::allocate(_size);
			memcpy(_arr[i],ra._arr[i],sizeof(T)*_size);
		}
        return *this;
	}
	~TArr()
	{
         free();
	}
	void print() const
	{
		if(_arr)
		{
			for(size_t i = 0; i < _size; i++)
			{
				for(size_t j = 0; j < _size; j++)
					std::cout<<std::setw(4)<<_arr[i][j];
				std::cout<<std::endl;
			}
		}
	}
private:
	void free()
	{
        if(_arr)
		{
			for(size_t i = 0; i < _size; i++)
				allocator_<T>::deallocate(_arr[i]);
			allocator_<T*>::deallocate(_arr);
		}
	}
private:
	T** _arr;
	size_t _size;
};

typedef TArr<int,new_allocator> TIntArr;

int main()
{
  TIntArr ta(10);
  ta.print();
  TIntArr ta2(13);
  ta = ta2;
  ta.print();
  return 0;
}
Помог? Оставляем отзыв =)
Helloween вне форума Ответить с цитированием
Старый 26.08.2013, 17:53   #6
mixon-21
Я только Учусь
Форумчанин
 
Аватар для mixon-21
 
Регистрация: 06.03.2013
Сообщений: 193
По умолчанию

А как теперь перегрузить operator+

Код:
#include <iostream>
#include <conio.h>
#include <time.h>
using namespace std;
class myMas
{
public:
myMas(int n);
~myMas();
int operator[](int ar);
myMas& operator+(const myMas& ar);
void display();
private:
int *size;
int m;
int count;
};
 
myMas::myMas(int n)
{
size=new int[n];
count=n;
}
 
 
myMas::~myMas()
{
delete [] size;
}
int myMas::operator[](int ar)
{
    return myMas::size[ar];
}
 
myMas& myMas::operator+(const myMas& ar)
{
    return *this;
}
void myMas::display()
{
    srand(time(NULL));
    for(int i=0;i<myMas::count;i++)
    {
        myMas::size[i]=rand()%10;
         cout << myMas::size[i] <<' ';
    }
}
void main()
{
    myMas ekz=myMas(5),ekz1=myMas(2),ekz2=ekz+ekz1;
 
    ekz2.display();
 
system ("pause");
}
где operator+ (добавление элемента в конец массива),
mixon-21 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамический масив Владан Паскаль, Turbo Pascal, PascalABC.NET 0 03.12.2012 15:28
Динамический масив kaznachey1993 Помощь студентам 0 07.06.2012 13:02
динамический масив NewWave Общие вопросы C/C++ 9 09.04.2012 13:34
Динамический масив домашка Xameleon666 Помощь студентам 8 08.02.2012 23:23
Динамический масив (Си) VadEr Помощь студентам 2 18.01.2010 20:33