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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.11.2008, 12:22   #1
EfiopianDIMON
 
Регистрация: 03.06.2008
Сообщений: 8
По умолчанию Класс рваный массив

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


Код:
#include <iostream>
#include <time.h>
#include <iomanip>
using namespace std;

class Lacerated_array
{	
	//private:
	int **arr;
	int row;
public:
	Lacerated_array()// конструктор по умолчанию
	{	
		cout<<"Enter row:";
		cin>>row;
		arr = new int * [row];

		for(int i=0; i<row; i++)
		{	
			int size = rand()%10+2;
			arr[i] = new int [size+1];
			arr[i][0] = size;
		}

		for (int i=0; i<row; i++) 
		{
			for (int j=1; j<arr[i][0]; j++)
			{
				arr[i][j] = rand()%10;
			}
		}	
	}

            void Add_element_end (int index, int value)//Добавление элемента в конец строки
	{
		int **tmp = new int* [row];
		int y;
		for(int i=index; i<index; i++)
		{	
			tmp[i][0] = arr[i][0];//размер строки
			tmp[index] = new int [tmp[i][0]+1];
			/*y = Get_Lacerated_array(index);*///возращаемый размер строки
			y = tmp[i][0];
			for(int j=1; j<tmp[i][0]; j++)
			{
				tmp[i][j] = arr[i][j];
			}
		}
		tmp[index][y] = value;// вот на что ссылается Debugging= CXX0030: Error: expression cannot be evaluated
		for(int i=index; i<index; i++)
		{
			for(int j=1; j<arr[i][0]; j++)
			{
				arr[i][j] = tmp[i][j];
			}
		}

		for(int i=index; i<index; i++)
		{
			delete [] tmp[i];
		}
		delete [] tmp;

		Get_Lacerated_array(index++);
	}

	int Get_Lacerated_array(int i)//возвращает размер строки массива
	{	
		return arr[i][0];
	}

	int Get_Row ()// возвращает количество строк массива
	{
		return row;
	}

             void Show()
	{
		for (int i=0; i<Get_Row(); i++) 
		{
			for (int j=1; j<Get_Lacerated_array(i); j++)
			{
				cout<<setw(3)<<arr[i][j];
			}
			cout<<endl;
		}
	}

             ~Lacerated_array()
	{	
		for(int i=0; i<row; i++)
		{
			delete []arr[i];
		}
		delete [] arr;
	}
};


void main()
{	
	srand(time(0));
	Lacerated_array a;
	a.Show();
	cout<<endl;
	a.Add_element_end(3,3);
	a.Show();
}
EfiopianDIMON вне форума Ответить с цитированием
Старый 29.11.2008, 13:47   #2
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

Попробуй поставить
Код:
tmp[index][y-1]=value;
MaTBeu вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Упорядочить массив в порядке возрастания и напечатать входной и исходный массив. TheVenny Помощь студентам 3 26.11.2008 15:06
Класс Юлёк Фриланс 6 15.06.2008 15:00
С++ Создать класс содержащий 3х-мерный массив int'ов, заполнять с помощью генератора случайных чисел vipER Помощь студентам 1 22.09.2007 22:08