|
Основной форум Сюда все проблемы связанные с программированием. |
06.11.2008, 19:23
|
#1
|
Нуждающийся
Регистрация: 22.09.2008
Сообщений: 74
Написано 8 полезных сообщений (для 12 пользователей)
|
Про массивы.
Вот у меня вопрос. Можно ли так?
Type masint = array[1..10,1..10] of integer; objint = array[1..10] of masint; Var i,j,k : integer; object : objint; begin //..... Как правильно обратиться к элементу Object? end.
|
(Offline)
|
|
06.11.2008, 20:30
|
#2
|
ПроЭктировщик
Регистрация: 31.03.2008
Сообщений: 134
Написано 8 полезных сообщений (для 8 пользователей)
|
Ответ: Про массивы.
object[i].[j,k]:= не пробывал?))
как на меня то бред=))
|
(Offline)
|
|
06.11.2008, 20:47
|
#3
|
Модератор
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений (для 817 пользователей)
|
Ответ: Про массивы.
Вот так компилится, но работу мидлета не проверял:
type objint=array[1..10,1..10,1..10] of integer; var object:objint; begin object[1,2,3]:=12; end;
|
(Offline)
|
|
06.11.2008, 21:09
|
#4
|
ПроЭктировщик
Регистрация: 31.03.2008
Сообщений: 134
Написано 8 полезных сообщений (для 8 пользователей)
|
Ответ: Про массивы.
вообщето да... какой смысл создавать "подмасивы" если фсё можно запхнуть в один масив с тремя переменными и работать с objint как с первой переменной в примере создателя темы а с masint как с остальными двумя
|
(Offline)
|
|
06.11.2008, 23:24
|
#5
|
Нуждающийся
Регистрация: 22.09.2008
Сообщений: 74
Написано 8 полезных сообщений (для 12 пользователей)
|
Ответ: Про массивы.
Дело в том, что МП не держит больше двух размерностей. Компилится, то он нормально, но вот мидлет не запускается. Выдает ошибку класса, не помню какого.
|
(Offline)
|
|
07.11.2008, 20:34
|
#6
|
ПроЭктировщик
Регистрация: 31.03.2008
Сообщений: 134
Написано 8 полезных сообщений (для 8 пользователей)
|
Ответ: Про массивы.
Type Tobjint = array[1..10,1..10] of integer; Var i,j,k : integer; object : array[1..10] of Tobjint; begin //..... Object[i].masint[j,k] := 100; end.
|
(Offline)
|
|
07.11.2008, 20:45
|
#7
|
Модератор
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений (для 817 пользователей)
|
Ответ: Про массивы.
Этот код даже не скомпилится.
Вообще похоже, что в MP можно создать максимум двумерный массив.
|
(Offline)
|
|
08.11.2008, 00:47
|
#8
|
Нуждающийся
Регистрация: 22.07.2006
Сообщений: 50
Написано 6 полезных сообщений (для 19 пользователей)
|
Ответ: Про массивы.
Сейчас попробовал сделать трехмерный массив, все нормально скомпилировалось и запустилось (эмулятор -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.
Последний раз редактировалось Frank, 08.11.2008 в 12:19.
|
(Offline)
|
|
08.11.2008, 00:48
|
#9
|
Нуждающийся
Регистрация: 22.09.2008
Сообщений: 74
Написано 8 полезных сообщений (для 12 пользователей)
|
Ответ: Про массивы.
Всё решил проблему, вспомнив слова Odd о реализации неквадратных массивов.
Принцип таков:
Program Massivy; var i,j,k : integer; object : array [1..1000] of integer; begin //..... i:=1;j:=1;k:=1; //Обращаюсь к элементу Object[(i-1)*100+(j-1)*10+k]:=34; //.... end.
При таком варианте можно скоко угодно размерностей, да и места используется минимум, потому как подмассивы могут быть различной длины.
=)
|
(Offline)
|
|
08.11.2008, 00:58
|
#10
|
Нуждающийся
Регистрация: 22.09.2008
Сообщений: 74
Написано 8 полезных сообщений (для 12 пользователей)
|
Ответ: Про массивы.
GetObj:=obj[((y div 10)+x)*z];
|
Сомневаюсь, что индекс будет правильным. y div 10 будет всегда давать 0 при (y>=0) and (y<10).
Наверно, там должно быть y mod 10?
Имхо, описанный мной способ нагляднее.
Всё-равно спасибо за участие
|
(Offline)
|
|
08.11.2008, 12:19
|
#11
|
Нуждающийся
Регистрация: 22.07.2006
Сообщений: 50
Написано 6 полезных сообщений (для 19 пользователей)
|
Ответ: Про массивы.
Ой блин! ступил я немного! действительно правильно делать как ты и написал, но я все равно лучше бы закатал обращение к массиву через функцию, чтобы каждый раз эту формулу не выписывать...
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 17:18.
|