#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 = new int [size+1];
arr[0] = size;
}
for (int i=0; i<row; i++)
{
for (int j=1; j<arr[0]; j++)
{
arr[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[0] = arr[0];//размер строки
tmp[index] = new int [tmp[0]+1];
/*y = Get_Lacerated_array(index);*///возращаемый размер строки
y = tmp[0];
for(int j=1; j<tmp[0]; j++)
{
tmp[j] = arr[j];
}
}
tmp[index][y] = value;// [COLOR="Red"]вот на что ссылается Debugging= CXX0030: Error: expression cannot be evaluated[/COLOR]
for(int i=index; i<index; i++)
{
for(int j=1; j<arr[0]; j++)
{
arr[j] = tmp[j];
}
}
for(int i=index; i<index; i++)
{
delete [] tmp;
}
delete [] tmp;
Get_Lacerated_array(index++);
}
int Get_Lacerated_array(int i)//возвращает размер строки массива
{
return arr[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[j];
}
cout<<endl;
}
}
~Lacerated_array()
{
for(int i=0; i<row; i++)
{
delete []arr;
}
delete [] arr;
}
};
void main()
{
srand(time(0));
Lacerated_array a;
a.Show();
cout<<endl;
a.Add_element_end(3,3);
a.Show();
}
Класс рваный массив
Запутался в размерах строк, ни как не могу вывести на экран изменения массива, постоянные ошибки при выполнении, самому сложно разобраться.
Выношу один из методов, добавить один элемент в конец заданной строки:
Код: