Модераторы: volvo877, Snowy, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как описать массив, размеры к-го получаем с клавы? 
V
    Опции темы
Kbl4AH
Дата 1.12.2008, 19:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 741
Регистрация: 1.4.2008
Где: Вятка

Репутация: нет
Всего: 15



Здравствуйте.
Подскажите, как описать массив неизвестной длины NxM, где N и M вводятся в процессе программы с клавиатуры?
И в чем разница в описании массива так:
Код

type a = array [1..2] of real;

и так:
Код

var a: array [1..2] of real;
?

Это сообщение отредактировал(а) Kbl4AH - 1.12.2008, 20:00
PM MAIL ICQ   Вверх
Letov
Дата 1.12.2008, 20:55 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 321
Регистрация: 22.2.2007
Где: Санкт-Петербург

Репутация: нет
Всего: 4



1) Попробуйте использовать указатели. (Указатель на начало данных, ллина данных и текущее положения конца данных) - что-то вроде динамического массива.
2) В первом случае
Код

type a = array [1..2] of real;

Вы объявляете тип данных, а во втором
Код

var a: array [1..2] of real;

переменную - массив.


--------------------
Не бывает плохих языков программирования. Бывают плохие программисты...

PM MAIL   Вверх
Kbl4AH
Дата 1.12.2008, 21:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 741
Регистрация: 1.4.2008
Где: Вятка

Репутация: нет
Всего: 15



Цитата(Letov @ 1.12.2008,  21:55)
1) Попробуйте использовать указатели. (Указатель на начало данных, ллина данных и текущее положения конца данных) - что-то вроде динамического массива.

А можно по-подробнее? По-моему, все равно ругаться компилятор будет...
И еще интересует максимальный размер двумерного массива...
Почему ругается на следующее описание: 
Код

var a: array [1..255,1..255] of word;
 255*255=65025, а это меньше размера word = 65535

Это сообщение отредактировал(а) Kbl4AH - 1.12.2008, 21:10
PM MAIL ICQ   Вверх
Letov
Дата 1.12.2008, 21:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 321
Регистрация: 22.2.2007
Где: Санкт-Петербург

Репутация: нет
Всего: 4



К сожалению, в данный момент у меня нет под рукой материала на тему динамических массивов в паскале.
Вот здесь есть статья, описывающая создание одномерного динамического массива.
Для создания двухмерного массива (матрицы) можно поступить следующим образом:
1) Создавать нужное колличество одномерных динамических массивов длинной M (кол-во столбцов) (строки матрицы) и заносить адреса их начала в некий динамический массив длинной N (кол-во строк).
2) Для обращения к данным использовать:
Addr = str+N*L, где Addr - адрес элемента в памяти (указатель), str - адрес первого элемента строки, N - номер элемента, L - длина типа данных (т.е. количество памяти, занимаемое одной переменной данного типа даннных)

Это, конечно, не идеальный вариант. Может быть кто-то подскажет более правильное и рациональное решение данной задачи.
Но все же стоит попробовать.


--------------------
Не бывает плохих языков программирования. Бывают плохие программисты...

PM MAIL   Вверх
volvo877
Дата 2.12.2008, 09:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 2
Всего: 116



Цитата(Letov @  1.12.2008,  20:11 Найти цитируемый пост)
Это, конечно, не идеальный вариант
Идеальных вариантов в программировании нет вообще. Хочешь идеальных решений - меняй профессию.

Оптимальный вариант приведен у тебя в пункте №1. Вот тут лежит его реализация: Динамический массив
PM MAIL   Вверх
Kbl4AH
Дата 3.12.2008, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 741
Регистрация: 1.4.2008
Где: Вятка

Репутация: нет
Всего: 15



Спасибо!
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle
Rrader
volvo877

Запрещается!

1. Обсуждать и делится взломанными компонентами или программным обеспечением

2. Публиковать ссылки на варез

3. Оффтопить

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема »


 




[ Время генерации скрипта: 0.0740 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.