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

Ваш аккаунт

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

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

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

Создание трехмерного динамического массива

63K
13 марта 2014 года
4итер
18 / / 17.05.2012
Создать трехмерный динамический массив, типа string, количество страниц =9. Каждая страница размерностью 65*65
465
16 марта 2014 года
QWERYTY
595 / / 25.03.2012
Херово тебе помогали, по тому что дальше начинаются ещё более чудесные чудеса )))

Вот такой код ты хотел?

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, StdCtrls;



type
Tmass = array of array of array of integer;


type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Button1: TButton;
    Button2: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    StringGrid1: TStringGrid;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;



var
  Form1: TForm1;
  Fmass: Tmass;
//  i, j: integer;



implementation

{$R *.dfm}


procedure TForm1.Button1Click(Sender: TObject);
var
i,j,n,m,k,z: integer;
begin
  n:=strtoint(Edit1.Text);
  m:=strtoint(Edit2.Text);
  k:=strtoint(Edit3.Text);

  StringGrid1.ColCount := n;
  StringGrid1.RowCount := m;

  SetLength(Fmass, n, m, k);
   
    // Обрати внимание на следующие две строчки
  Label1.Caption := IntToStr(Length(Fmass));
  Label2.Caption := IntToStr(Length(Fmass[0]));

  {
  for i:=Low(Fmass) to High(Fmass) do
  begin
    SetLength (Fmass[i], n);
    for j := Low(Fmass) to High(Fmass) do
    SetLength (Fmass[i][j], m);
    end;    }




  //randomize;


  for i := 0 to Length(Fmass) - 1 do
  for j := 0 to Length(Fmass[0]) - 1 do
  for z := 0 to Length(Fmass[0, 0]) - 1 do
  begin
     ///////////////////////// НАЧАЛО ШАХМАТ ///////////////////////////////
    if (i mod 2=0) and (j mod 2 =0) then Fmass[i,j,z]:=1
    else Fmass[i,j,z]:=0;
    if (i mod 2 <> 0) and (j mod 2 <> 0) then Fmass[i,j,z]:=1;
      ////////////////////// КОНЕЦ ШАХМАТ ///////////////////////////////////

    StringGrid1.Cells[i,j]:=inttostr(Fmass[i,j,z]);
    end;

end;



end.
Теперь он компилируется и нет ошибки времени выполнения.
Теперь осталось с шахматами разобраться)))
247
14 марта 2014 года
wanja
1.2K / / 03.02.2003
 
Код:
hehe:array of array of array of string;
.............


SetLength(hehe,9,65,65)
Правда, не уверен, что это влезет в склероз...
63K
14 марта 2014 года
4итер
18 / / 17.05.2012
Цитата: wanja
 
Код:
hehe:array of array of array of string;
.............


SetLength(hehe,9,65,65)
Правда, не уверен, что это влезет в склероз...



С этим более-менее понятно, как тогда такой массив заполнить в виде шахматной доски?

247
15 марта 2014 года
wanja
1.2K / / 03.02.2003
В каком смысле, "в виде шахматной доски"?
63K
16 марта 2014 года
4итер
18 / / 17.05.2012
В прямом, например белый цвет-это нули, а черный- это единицы
465
16 марта 2014 года
QWERYTY
595 / / 25.03.2012
А подробней можно описать что вы хотите?

В вопросе нет ничего ни о цветах ни о шахматной доске.
63K
16 марта 2014 года
4итер
18 / / 17.05.2012
Просто сначала нужно было создать этот массив, а потом его заполнить, И с этим возникли некоторые проблемы
247
16 марта 2014 года
wanja
1.2K / / 03.02.2003
То есть строками "black" и "white", что ли?
63K
16 марта 2014 года
4итер
18 / / 17.05.2012
да да , именно так и нужно
465
16 марта 2014 года
QWERYTY
595 / / 25.03.2012
Код:
var
  Form1: TForm1;
  StrArr: array of array of array of STRING;


implementation

{$R *.dfm}




procedure TForm1.Button1Click(Sender: TObject);
var
I, J, K: BYTE;
begin

   SetLength(StrArr, 9, 65, 65);

   for I := 0 to 8 do
     for J := 0 to 64 do
       for K := 0 to 64 do
       begin
          if (I + J + K) Mod 2 > 0 then StrArr[I, J, K] := 'black' else StrArr[I, J, K] := 'white';

          end;



end;
Ну вот так можно. Честно я хз как тут по части шахмат.

Задание что ли какое? Просто я не понимаю зачем хранить строки, тип BOOL вполне подошёл бы, а выводить можно и строку если это
где то необходимо
465
16 марта 2014 года
QWERYTY
595 / / 25.03.2012
Ты случайно не из Оренбургской области?
465
16 марта 2014 года
QWERYTY
595 / / 25.03.2012
 
Код:
n:=strtoint(Edit1.Text);
  m:=strtoint(Edit2.Text);
  k:=strtoint(Edit3.Text);
  SetLength(Fmass, k);
  for i:=Low(Fmass) to High(Fmass) do
  begin
    SetLength (Fmass[i], n);
    for j := Low(Fmass) to High(Fmass) do
    SetLength (Fmass[i][j], m);
    end;
Там весь код сплошной баг))) Но начнём по порядку.
Прокоментируй пожалуйста каждую строчку, ну например начиная с SetLength(Fmass, k);
Зачем столько раз вызывается SetLength?


И старайся письмами не выкладывать такие увесистые труды, в экран не вмещаются и скролинга нет
63K
16 марта 2014 года
4итер
18 / / 17.05.2012
Это один из самых непонятных мне кусков) Помогали просто мне)
63K
16 марта 2014 года
4итер
18 / / 17.05.2012
С шахматами самое сложное) Нужно чтоб белые цвета были нулями, а черные единицами
465
16 марта 2014 года
QWERYTY
595 / / 25.03.2012
Да где какие цвета?

Это наверное розыгрыш, где видеокамеры?
63K
16 марта 2014 года
4итер
18 / / 17.05.2012
ну если представить массив в виде шахмат) цвет не важен
465
16 марта 2014 года
QWERYTY
595 / / 25.03.2012
Цитата: 4итер
ну если представить массив в виде шахмат) цвет не важен



Извини но я так умею только после двух бутылок водки)))


Ты опиши подробно что нужно заполнить и при чём там стринггрид

63K
16 марта 2014 года
4итер
18 / / 17.05.2012
Цитата: QWERYTY
Цитата: 4итер
ну если представить массив в виде шахмат) цвет не важен



Извини но я так умею только после двух бутылок водки)))


Ты опиши подробно что нужно заполнить и при чём там стринггрид



Ну скажем так, есть массив, он заполняется так 1 0 1 0 1 0
0 1 0 1 0 1

Может так будет немного понятней)

465
16 марта 2014 года
QWERYTY
595 / / 25.03.2012
Ладно. Тот вариант который сейчас есть чем не устраивает?
63K
16 марта 2014 года
4итер
18 / / 17.05.2012
Я просто не стал его проверять, сейчас запустил, вроде работает как надо) Спасибо за помощь!

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог