Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для мобильных телефонов > MidletPascal > Основной форум

Основной форум Сюда все проблемы связанные с программированием.

Ответ
 
Опции темы
Старый 06.11.2008, 19:23   #1
Cliffe Snake
Нуждающийся
 
Аватар для Cliffe Snake
 
Регистрация: 22.09.2008
Сообщений: 74
Написано 8 полезных сообщений
(для 12 пользователей)
Вопрос Про массивы.

Вот у меня вопрос. Можно ли так?
Type
  masint 
= array[1..10,1..10of integer;
  
objint = array[1..10of masint;
Var 
  
i,j,integer;
  
object objint;
begin
//..... Как правильно обратиться к элементу Object?
end
(Offline)
 
Ответить с цитированием
Старый 06.11.2008, 20:30   #2
beZ_probleM
ПроЭктировщик
 
Регистрация: 31.03.2008
Сообщений: 134
Написано 8 полезных сообщений
(для 8 пользователей)
Ответ: Про массивы.

object[i].[j,k]:= не пробывал?))
как на меня то бред=))
(Offline)
 
Ответить с цитированием
Старый 06.11.2008, 20:47   #3
ViNT
Модератор
 
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений
(для 817 пользователей)
Ответ: Про массивы.

Вот так компилится, но работу мидлета не проверял:
type
 objint
=array[1..10,1..10,1..10of integer;
var
 
object:objint;
begin
  object
[1,2,3]:=12;
end
(Offline)
 
Ответить с цитированием
Старый 06.11.2008, 21:09   #4
beZ_probleM
ПроЭктировщик
 
Регистрация: 31.03.2008
Сообщений: 134
Написано 8 полезных сообщений
(для 8 пользователей)
Ответ: Про массивы.

вообщето да... какой смысл создавать "подмасивы" если фсё можно запхнуть в один масив с тремя переменными и работать с objint как с первой переменной в примере создателя темы а с masint как с остальными двумя
(Offline)
 
Ответить с цитированием
Старый 06.11.2008, 23:24   #5
Cliffe Snake
Нуждающийся
 
Аватар для Cliffe Snake
 
Регистрация: 22.09.2008
Сообщений: 74
Написано 8 полезных сообщений
(для 12 пользователей)
Ответ: Про массивы.

Дело в том, что МП не держит больше двух размерностей. Компилится, то он нормально, но вот мидлет не запускается. Выдает ошибку класса, не помню какого.
(Offline)
 
Ответить с цитированием
Старый 07.11.2008, 20:34   #6
beZ_probleM
ПроЭктировщик
 
Регистрация: 31.03.2008
Сообщений: 134
Написано 8 полезных сообщений
(для 8 пользователей)
Ответ: Про массивы.

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
(Offline)
 
Ответить с цитированием
Старый 07.11.2008, 20:45   #7
ViNT
Модератор
 
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений
(для 817 пользователей)
Ответ: Про массивы.

Этот код даже не скомпилится.
Вообще похоже, что в MP можно создать максимум двумерный массив.
(Offline)
 
Ответить с цитированием
Старый 08.11.2008, 00:47   #8
Frank
Нуждающийся
 
Аватар для Frank
 
Регистрация: 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
Cliffe Snake
Нуждающийся
 
Аватар для Cliffe Snake
 
Регистрация: 22.09.2008
Сообщений: 74
Написано 8 полезных сообщений
(для 12 пользователей)
Ответ: Про массивы.

Всё решил проблему, вспомнив слова Odd о реализации неквадратных массивов.
Принцип таков:
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
При таком варианте можно скоко угодно размерностей, да и места используется минимум, потому как подмассивы могут быть различной длины.
=)
(Offline)
 
Ответить с цитированием
Старый 08.11.2008, 00:58   #10
Cliffe Snake
Нуждающийся
 
Аватар для Cliffe Snake
 
Регистрация: 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
Frank
Нуждающийся
 
Аватар для Frank
 
Регистрация: 22.07.2006
Сообщений: 50
Написано 6 полезных сообщений
(для 19 пользователей)
Ответ: Про массивы.

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


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Массивы в типе DStalk 2D-программирование 15 03.01.2010 22:45
Опять про массивы в МП. SOS! Licon Основной форум 2 17.03.2009 23:14
Массивы Petrofan 2D-программирование 74 04.03.2009 14:57
Многомерные массивы записей ARV Основной форум 1 19.01.2007 10:47
Спец массивы impersonalis Полезные функции 6 30.11.2005 01:08


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com