Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/14: Рейтинг темы: голосов - 14, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 28.10.2012
Сообщений: 21
1

Заполнение трехмерного массива из StringGrid

20.12.2013, 19:40. Показов 2844. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Проблема заключается в том, что не могу сообразить как заполнить трехмерный массив из стринггрида.
Имеется стринггрид StringGrid1->Cells[i][j]=random(10);
мне нужно записать значения из него в трехмерный массив a[m][i][j], не соображается уже подскажите
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.12.2013, 19:40
Ответы с готовыми решениями:

Заполнение StringGrid из массива
void __fastcall TForm1::Button3Click(TObject *Sender) { int n=2,i,j; float a; for(i=0;i<n;i++)...

Заполнение StringGrid из массива
Доброго времени суток нуждающиеся и их спасители. Есть таблица StringGrid 5 столбцов и 17 строк,...

Заполнение трехмерного массива
Есть программа которая считает расстояние скоростного пути.. и если машина находится близко к...

Заполнение трехмерного массива
Помогите с заполнением трехмерного массива, мне нужно чтобы он заполнился по порядку от 0 до 60....

11
Заблокирован
20.12.2013, 19:55 2
А почему не закинуть в двумерный массив?
0
0 / 0 / 0
Регистрация: 28.10.2012
Сообщений: 21
20.12.2013, 20:00  [ТС] 3
в программе нужно работать с элементами матрицы, каждый новый элемент новой матрицы получается из элементов двух предыдущих матриц и их элементов, т.е нужно хранить данные о элементах предыдущих матриц, моё решение: создать трехмерный массив и менять элемент m в массиве a[m][i][j] а в i j вносить данные из стринггрида i j.
0
Заблокирован
20.12.2013, 20:04 4
А в обычный двумерный массив вы можете данные ввести из StringGrid?
0
0 / 0 / 0
Регистрация: 28.10.2012
Сообщений: 21
20.12.2013, 20:06  [ТС] 5
окей, как внести в двумерный массив , попробую изменить алгоритм
0
Заблокирован
20.12.2013, 20:27 6
)это я просто интересовался. По-моему разницы в двух или трехмерный массив заносить данные нет.
Честно говоря не знаю, что такое StringGrid, но могу предположить, что данные заносятся как обычно:

C++
1
2
3
for(i=0;i<N;i++)
for(j=0;j<M;j++)
a[0][i][j]=StringGrid1->Cells[i][j];
Добавлено через 50 секунд
N,M это границы вашей StringGrid
0
0 / 0 / 0
Регистрация: 28.10.2012
Сообщений: 21
20.12.2013, 20:33  [ТС] 7
[C++ Error] LR3.cpp(51): E2062 Invalid indirection
[C++ Warning] LR3.cpp(52): W8004 'm' is assigned a value that is never used
и указывает на m, я пробовал так(
C++
1
2
3
4
5
6
7
8
9
void __fastcall TForm1::Button3Click(TObject *Sender)
{
int A,i,j,m=0;
float a;
A=StrToInt(Edit1->Text);
for(i=0;i<A-1;i++)
for(j=0;j<A-1;j++)
a[m][i][j]=StringGrid1->Cells[i][j];
}
вот в общем то пока что успел написать
0
Заблокирован
20.12.2013, 20:34 8
выложите весь код программы, наверное ошибка в чем то другом.
0
0 / 0 / 0
Регистрация: 28.10.2012
Сообщений: 21
20.12.2013, 20:37  [ТС] 9
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
#include "LR3.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{int A,i=0,j=0;
if(Edit1->Text.Length()==0)MessageBox(0,"Ââåäèòå ðàçìåð ìàòðèöû","Ïðîñüáà",MB_OK);
if(Edit1->Text.Length()>0)
  {
A=StrToInt(Edit1->Text);
StringGrid1->RowCount=A;
StringGrid1->ColCount=A;
 if(A<3){StringGrid1->Height=A*27;
          StringGrid1->Width=A*44;}
   else if(A==3){StringGrid1->Height=A*26;
                  StringGrid1->Width=A*42;}
   else{StringGrid1->Height=A*25.8;
         StringGrid1->Width=A*41.8;}
randomize();
 for(i=0;i<A;i++)
 for(j=0;j<A;j++)
    {
     StringGrid1->Cells[i][j]=random(10);
    }
  }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
int A,i,j,m=0;
float a;
A=StrToInt(Edit1->Text);
for(i=0;i<A-1;i++)
for(j=0;j<A-1;j++)
a[m][i][j]=StringGrid1->Cells[i][j];
}
//---------------------------------------------------------------------------
еще в общем то не готово) и много несуразных и не нужных вещей
0
Заблокирован
20.12.2013, 20:45 10
Что-то я не увидел объявления самого трехмерного массива. Конечно будет ошибки выдавать:

Цитата Сообщение от Sashak Посмотреть сообщение
float a;
так массивы не объявляют.

Пока не трогайте динамический, а сделайте вот так:
double a[10][10][10];
Но смотрите, что бы и значения не вылезали за эти пределы. Потом переделаете под динамический.
C++
1
2
3
for(i=0;i<A-1;i++)
for(j=0;j<A-1;j++)
a[m][i][j]=StringGrid1->Cells[i][j];
А нельзя делать вот так?
C++
1
2
3
for(i=0;i<StringGrid1->RowCount;i++)
for(j=0;j<StringGrid1->ColCount;j++)
a[0][i][j]=StringGrid1->Cells[i][j];
1
0 / 0 / 0
Регистрация: 28.10.2012
Сообщений: 21
20.12.2013, 20:54  [ТС] 11
Спасибо вам, застрял на такой глупости.. )
0
93 / 77 / 12
Регистрация: 26.07.2013
Сообщений: 553
21.12.2013, 16:03 12
- Sashak, немного переделал и оптимизировал Ваш проект.
- Ввел защиту на ввод неверных символов в Едит. Порядок матрицы СтрингГрида задается в пределах 0 - 5
включительно.
- Ввел управление клавишами. Теперь, пока Вы не введете правильный порядок матрицы СтрингГрида в Едит,
заселять СтрингГрид случайными значениями нельзя!
- Матрица, в которую сохраняются СтрингГриды создается динамически строго по размерам СтрингГрида,
чтобы не создавать ее заранее с запасом. Я заложил в нее сохранение максимум 10-ти матриц СтрингГрида.
- Есть защита на сохранение ровно до 10-ти СтрингГридов и не более!
- Правда не доделал освобождение памяти массива сохранения СтрингГридов. Это надо делать в деструкторе,
который надо для этого организовать. Но, я думаю, Вы сами легко сможете это доделать.

- Если что не понятно - спрашивайте ...
Вложения
Тип файла: rar Vers_0.rar (38.4 Кб, 23 просмотров)
1
21.12.2013, 16:03
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.12.2013, 16:03
Помогаю со студенческими работами здесь

Заполнение трехмерного массива
Нужно заполнить трехмерный массив размерами 4*5*7 случайными числами от 0 до 1 с шагом 0,1 и...

Ручное заполнение трехмерного массива
Доброго времени суток. Пишу лексический анализатор , и в базе данных стандартных типов анализатора...

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

Заполнение списка инициализации для трёхмерного массива
Здравствуйте как правильно инициализировать и заполнить статический трёх мерный массив? с двух...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru