forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Основной форум (http://forum.boolean.name/forumdisplay.php?f=49)
-   -   Про массивы. (http://forum.boolean.name/showthread.php?t=7286)

Cliffe Snake 06.11.2008 19:23

Про массивы.
 
Вот у меня вопрос. Можно ли так? :dontknow:
PHP код:

Type
  masint 
= array[1..10,1..10of integer;
  
objint = array[1..10of masint;
Var 
  
i,j,integer;
  
object objint;
begin
//..... Как правильно обратиться к элементу Object?
end


beZ_probleM 06.11.2008 20:30

Ответ: Про массивы.
 
object[i].[j,k]:= не пробывал?))
как на меня то бред=))

ViNT 06.11.2008 20:47

Ответ: Про массивы.
 
Вот так компилится, но работу мидлета не проверял:
PHP код:

type
 objint
=array[1..10,1..10,1..10of integer;
var
 
object:objint;
begin
  object
[1,2,3]:=12;
end


beZ_probleM 06.11.2008 21:09

Ответ: Про массивы.
 
вообщето да... какой смысл создавать "подмасивы" если фсё можно запхнуть в один масив с тремя переменными и работать с objint как с первой переменной в примере создателя темы а с masint как с остальными двумя :)

Cliffe Snake 06.11.2008 23:24

Ответ: Про массивы.
 
Дело в том, что МП не держит больше двух размерностей. Компилится, то он нормально, но вот мидлет не запускается. Выдает ошибку класса, не помню какого.

beZ_probleM 07.11.2008 20:34

Ответ: Про массивы.
 
PHP код:

Type 
     Tobjint 
= array[1..10,1..10of integer

Var  
  
i,j,integer
  
object : array[1..10of Tobjint
begin 
//.....
Object[i].masint[j,k] := 100;
end


ViNT 07.11.2008 20:45

Ответ: Про массивы.
 
Этот код даже не скомпилится.
Вообще похоже, что в MP можно создать максимум двумерный массив.

Frank 08.11.2008 00:47

Ответ: Про массивы.
 
Сейчас попробовал сделать трехмерный массив, все нормально скомпилировалось и запустилось (эмулятор -Sjboy)
Код:

Program Array3D;

var object:array[1..10,1..10,1..10] of integer;
Begin
        object[5,7,3]:=7;
        object[1,4,9]:=8;
        object[7,3,6]:=object[5,7,3]*object[1,4,9];
        DrawText(IntegerToString(object[7,3,6]), 5, 5);
        Repaint;       
        Delay(5000);
End.


Cliffe Snake 08.11.2008 00:48

Ответ: Про массивы.
 
Всё решил проблему, вспомнив слова Odd о реализации неквадратных массивов.
Принцип таков:
PHP код:

Program Massivy;
var
  
i,j,k     integer;
  
object : array [1..1000of integer;
begin
//.....
i:=1;j:=1;k:=1;
//Обращаюсь к элементу
Object[(i-1)*100+(j-1)*10+k]:=34;
//....
end

При таком варианте можно скоко угодно размерностей, да и места используется минимум, потому как подмассивы могут быть различной длины.
=)

Cliffe Snake 08.11.2008 00:58

Ответ: Про массивы.
 
Цитата:

GetObj:=obj[((y div 10)+x)*z];
Сомневаюсь, что индекс будет правильным. y div 10 будет всегда давать 0 при (y>=0) and (y<10).
Наверно, там должно быть y mod 10?
Имхо, описанный мной способ нагляднее.
Всё-равно спасибо за участие :)

Frank 08.11.2008 12:19

Ответ: Про массивы.
 
Ой блин! ступил я немного! действительно правильно делать как ты и написал, но я все равно лучше бы закатал обращение к массиву через функцию, чтобы каждый раз эту формулу не выписывать...


Часовой пояс GMT +4, время: 22:26.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot