Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с массивом 
:(
    Опции темы
Ярослав
Дата 9.6.2012, 18:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 189
Регистрация: 8.6.2009

Репутация: нет
Всего: -1



Подскажите пожалуйста как мне вытянуть данные из массива чисел. В яве яделал так

Сам масив в отдельном файле

package Meteo;

class Meteo {
static double[][]Tabl = new double[][] {
{0,     -16,    0,      0,      0,      0,      0},
{1,     -16,    1,     1,      1,         1,    1},
{2,     -16,    2,     2,      2,      2,    2},};
}

А так по нажатию на кнопку вытягую данные
W=Meteo.Tabl[1][1];

Так вот вопрос как точно такое сделать в С++ билдер а именно создать это файл с массивом и как ссылатса на него и как вытягивать данные???
Заранее всем спасибо
PM MAIL   Вверх
Doga
Дата 9.6.2012, 19:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 115
Регистрация: 20.12.2007
Где: Россия, Обнинск

Репутация: нет
Всего: нет



Привет.

Как известно, Ява и С++, как языки программирования, различаюся весьма кардинально. И совсем не удивительно, что элементарные синтаксические конструкции одного языка вызывают непреодолимые трудности, при попытке их реализации в другом (языке).

Вообще, то что Вам нужно, у Сишников, на данный момент, принято записывать так:
Код

  double Tabl[3][7] =
  {
    {0,     -16,    0,      0,      0,      0,      0},
    {1,     -16,    1,     1,      1,         1,    1},
    {2,     -16,    2,     2,      2,      2,    2}
  };


Чувствуете теперь разницу?
 smile 


Если серёзно.

Если Вы желаете хранить данные в текстовом виде - клас TStringList для начала. Записывать в файл элементарно, извлекать данные можно простейшим самописным парсером.
А если в двоичном виде - класс TFileStream. Но тут уже будет сложнее.

И есть ещё куча вариантов с примерами, в т.ч здесь, на форуме. 


Это сообщение отредактировал(а) Doga - 9.6.2012, 19:23
PM MAIL WWW   Вверх
artsb
Дата 9.6.2012, 21:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 39
Всего: 64



Есть два способа:
*.H
Код

class Meteo
{
public:
    static double Tabl[3][7];
    double **Tabl_2;

    Meteo(void);
    ~Meteo(void);
}; 

*.CPP
Код

//---------------------------------------------------------------------------
double Meteo::Tabl[3][7] =
{
    {0, -16, 0, 0, 0, 0, 0},
    {1, -16, 1, 1, 1, 1, 1},
    {2, -16, 2, 2, 2, 2, 2}
};
//---------------------------------------------------------------------------
Meteo::Meteo(void)
{
    Tabl_2 = new double* [3];

    for(int i = 0; i < 3; i++)
    {
        Tabl_2[i] = new double;
    }

    // заполняем массив Tabl_2
    // ...
}
//---------------------------------------------------------------------------
Meteo::~Meteo(void)
{
    for(int i = 0; i < 3; i++)
    {
        delete [] Tabl_2[i];
    }

    delete [] Tabl_2;
}
//---------------------------------------------------------------------------


Это сообщение отредактировал(а) artsb - 9.6.2012, 21:11


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
Doga
Дата 13.6.2012, 23:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 115
Регистрация: 20.12.2007
Где: Россия, Обнинск

Репутация: нет
Всего: нет



Я так понял, что Ярославу требуется объект, формально являющийся матрицей определённого размера, с возможностью записи его содержимого в файл и чтения оного из файла.
Могу предложить такой вариант:

Код

class TDoubleList : public TObject
{
  protected:
    TList *FList;  //Список double*

    int  __fastcall GetCount(void);
    
    double __fastcall GetValue(int AIndex);
    void __fastcall SetValue(int AIndex, double AValue);

    int  __fastcall GetCapacity(void);
    void __fastcall SetCapacity(int ACapacity);

  public:
    __property double Value[int Index] = {read = GetValue, write = SetValue};
    __property int Count = {read = GetCount};
    __property int Capacity = {read = GetCapacity, write = SetCapacity};

    
    void __fastcall Clear(void);
    void __fastcall Add(double AValue);
    void __fastcall Insert(double AValue);
    void __fastcall Delete(int AIndex);
    void __fastcall Assign(TDoubleList *ASourceList);
    void __fastcall SetCount(int ANewSize, double ADefaultValue = 0.0, bool AClearPrevious = false);
    
    void __fastcall LoadFromString(AnsiString &ASourceStr, AnsiString ASeparator = ";", int ACount = 0);
    
    __fastcall TDoubleList(void);
    __fastcall ~TDoubleList(void);
};

class TDoubleTable : public TObject
{
  protected:
    TList *FList;  //Список TDoubleList*

    int  __fastcall GetColCount(void);    
    int  __fastcall GetRowCount(void);

    double __fastcall GetValue(int AColIndex, int ARowIndex);
    void __fastcall SetValue(int AColIndex, int ARowIndex, double AValue);

    int  __fastcall GetColCapacity(void);
    int  __fastcall GetRowCapacity(void);
    
    void __fastcall SetColCapacity(int ACapacity);
    void __fastcall SetRowCapacity(int ACapacity); 

  public:
    __property double Value[int ColIndex][int RowIndex] = {read = GetValue, write = SetValue};
    __property int ColCount = {read = GetColCount};
    __property int RowCount = {read = GetRowCount};
    __property int ColCapacity = {read = GetColCapacity, write = SetColCapacity};
    __property int RowCapacity = {read = GetRowCapacity, write = SetRowCapacity};

    void __fastcall Clear(void);
    void __fastcall AddCol(double ADefaultValue = 0.0);
    void __fastcall AddRow(double ADefaultValue = 0.0);
    void __fastcall InsertCol((int AColIndex, double ADefaultValue = 0.0);
    void __fastcall InsertRow(int AColIndex, double ADefaultValue = 0.0);
    void __fastcall DeleteCol(int AColIndex);
    void __fastcall DeleteRow(int ARowIndex);
    void __fastcall Assign(TDoubleTable *ASourceList);
    void __fastcall SetSize(int ANewColCount, int ANewRowCount, double ADefaultValue = 0.0, bool AClearPrevious = false);

    void __fastcall LoadFromFile(AnsiString AFileName);    
    void __fastcall LoadFromFile(AnsiString AFileName, int AColCount = 0, int ARowCount = 0);    
    void __fastcall SaveToFile(AnsiString AFileName);    

    __fastcall TDoubleTable(void);
    __fastcall TDoubleTable(void);
};


Класс TDoubleTable построен с использованием класса TDoubleList
Для хранения объектов обоих классов используется класс TList.

Класс  TDoubleTable предоставляет доступ ко всем элементам таблицы.
Позволяет добавлять/вставлять/удалять колонки/строки таблицы.
Может устанавливать заданный размер таблицы с заданным значением элементов.
Имеет возможность записывать свои данные в файл и читать их из файла.
При этом, при чтении из файла, имеется возможность загрузитиь таблицу определённого размера. 
PM MAIL WWW   Вверх
xvr
Дата 14.6.2012, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 48
Всего: 223



Цитата(Doga @  13.6.2012,  23:47 Найти цитируемый пост)
Я так понял, что Ярославу требуется объект, формально являющийся матрицей определённого размера, с возможностью записи его содержимого в файл и чтения оного из файла.

Судя по оригиналу на Java у ТС он под 'отдельным файлом' понимал отдельный модуль в программе, и речь о чтении/записи матрицы в файл в run-time вообще не шла  smile 

PM MAIL   Вверх
Doga
Дата 14.6.2012, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 115
Регистрация: 20.12.2007
Где: Россия, Обнинск

Репутация: нет
Всего: нет



Во как!  smile 
PM MAIL WWW   Вверх
Ярослав
Дата 14.6.2012, 21:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 189
Регистрация: 8.6.2009

Репутация: нет
Всего: -1



Ребят, смысл в том что есть отдельный клас тоесть массив в котором много рядов и строк с числами, а на форме две ячейки в которых указываетса ряд и строка по нажатию на кнопку выдаёт значение из таблицы которое ранее было указано.
В андроиде я указывал так
Вот отдельный класс с таблицей данных

class Tabl {
static double[][]Tabl = new double[][] {
{0,     -16,    0,      0,      0,      0,      0,        0,            1,            2,            2,           2,           3},
{1,    -16,    1,    1,       1,     1,    1,    2,    3,    3,    3,    4,    4},
};
}
А так я вытягиваю нужные мне данные
gr2_200=Tabl.Tabl[2][1]));
И того мне выдаст 1 
PM MAIL   Вверх
xvr
Дата 14.6.2012, 21:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 48
Всего: 223



Цитата(Ярослав @  14.6.2012,  21:13 Найти цитируемый пост)
Вот отдельный класс с таблицей данных

На С (С++) можно просто сделать массив
Код

doubleTabl[][] = {
{0,     -16,    0,      0,      0,      0,      0,        0,            1,            2,            2,           2,           3},
{1,    -16,    1,    1,       1,     1,    1,    2,    3,    3,    3,    4,    4},
};


Цитата(Ярослав @  14.6.2012,  21:13 Найти цитируемый пост)
А так я вытягиваю нужные мне данные
gr2_200=Tabl.Tabl[2][1]));

И вытаскивать почти так же:
Код

gr2_200=Tabl[1][2];
Только массив должен быть описан там, где вы его используете. Иначе придется делать его предварительное описание с размерами

PM MAIL   Вверх
Ярослав
Дата 16.6.2012, 17:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 189
Регистрация: 8.6.2009

Репутация: нет
Всего: -1



О, дабро готов и описать как сделать его в отдельном файле.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0789 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.