Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Класс рваный массив

38K
29 ноября 2008 года
ДмитрийизОдессы
9 / / 26.07.2008
Задача реализовать класс рваный массив (массив с разными размерами строк)
Запутался в размерах строк, ни как не могу вывести на экран изменения массива, постоянные ошибки при выполнении, самому сложно разобраться.
Выношу один из методов, добавить один элемент в конец заданной строки:


Код:
#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();
}
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог