двумерный массив в паскале



Pascal двумерный массив

Автор Night Stranger задал вопрос в разделе Другие языки и технологии

Pascal. Двумерный массив и получил лучший ответ

Ответ от Gennady[гуру]
Доброго времени суток.
>> var
>> n,i: integer;
>> mas: array [1..n,1..n] of integer;
Компилятор не пропустит такого безобразия, Grand...
А если по сути дела, то Krab Bark совершенно правильно предложил. Позволю себе продемонстрировать пример с динамическим выделением памяти.
{отключаем проверку компилятором границ массива. Необходимо для дин. массивов в Турбо Паскале}
{$R-}
type
MyType = Word; {для примера тип данных матрицы - беззнаковое целое}
PMyVector = ^MyVector;
{"строка" динамической матрицы}
MyVector = Array[1..1] of MyType;
MyArrayPtr = ^MyArray;
{сама матрица - представляется как массив указателей на "строки"}
MyArray = Array[1..1] of PMyVector;
var
DynamicArray : MyArrayPtr; {указатель на матрицу}
Count, i, j : Word;
begin
Write('Число элементов массива: ');
ReadLn(Count); {это ваша размерность матрицы}
{выделяем память под указатели на "строки"}
GetMem(DynamicArray, Count * SizeOf(PMyVector));
{и для каждой "строки" - выделяем память для хранения данных}
for i := 1 to Count do
GetMem(DynamicArray^[ i ], Count * SizeOf(MyType));
for i:=1 to Count do {Rows}
for j:=1 to Count do {Columns}
{немного изменяется способ обращения к элементу матрицы}
DynamicArray^[ i ]^[j] := i * j; {присвоение значений элементам}
{вывод на экран для проверки}
for i:=1 to Count do begin
WriteLn;
for j:=1 to Count do Write(DynamicArray^[ i ]^[ j ]:4);
end;
{освобождаем память в обратном порядке: }
{сначала - удаляем все "строки"}
for i := 1 to Count do
FreeMem(DynamicArray^[ i ], Count * SizeOf(MyType));
{а теперь и указатели на них ...}
FreeMem(DynamicArray, Count * SizeOf(PMyVector));
end.
Удачи!
Gennady
(51235)
Исходя из начальных условий, проще это вряд-ли... Дело в том, что размерность массива должна быть определена еще на этапе компиляции для того, чтобы под него в сегменте данных программы была выделена память. А поскольку вы хотите вводить эту размерность с клавиатуры, то остается только две возможности: объявление избыточного массива и работа с динамической памятью (или скажем так, мне не известны другие способы ). Все было бы ничего, но в стандарте пакаля нет динамических массивов. Поэтому и приходится устраивать такие пляски с бубном, как то: отключение проверки границ компилятором, объявление массивов всего из одного элемента, "ручное" выделение нужного объема памяти.

Ответ от Krab Bark[гуру]
Создать массив с запасом по емкости или использовать динамическое выделение памяти.

Ответ от Xom9kot[гуру]
program asdf;varn,i: integer;mas: array [1..n,1..n] of integer;beginwriteln( 'введите размер массива');readln(n);for i:=1 to n dobeginтут массив вводим.. .end;end.я точно не помню как, уже пол года паскаль не изучал.

Ответ от Александр Осип[активный]
Ну если было просто и в начале курса, тоconst n = 10;var a:array[0..n, 0..n] of ...;Но динамические массивы явно лучше

Ответ от 3 ответа[гуру]
Привет! Вот подборка тем с ответами на Ваш вопрос: Pascal. Двумерный массив
спросили в Pavel Prusskiy
Народ, как задается двумерный массив в паскале??
Массивы, положение элементов в которых описывается двумя индексами, называются двумерными.подробнее...

что такое одномерный и двумерный массив?
Одномерный массив - это у вас в линию выстроены предметы. У каждого есть номер.
Двумерный
подробнее...

работа с abc pascal. массивы
Массивы - это совокупности однотипных элементов. Характеризуются они следующим:

каждый
подробнее...

Как задать двумерный динамический массив в Паскале?
Двумерные массивы Паскаля – матрицы
Двумерный массив в Паскале трактуется как одномерный
подробнее...

Как в Pascal задать переменной несколько определенных значений ?
Данную переменную надо объявить массивом var c: ARRAY [1..4] OF integer=(5,3,6,2); и обращаться по
подробнее...
Ответ от 3 ответа[гуру]
Привет! Вот еще темы с похожими вопросами:

Pascal , Метод Гаусса
Твои главные ошибки:
1)Pascal
2)двумерные массивы ( это даже индусам непростительно
подробнее...
спросили в Другое
Базовым элементом изображения в расстровой графике что является?
Компьютерная графика подразделяется на:
статичную (неподвижная) ,
динамичную (анимация,
подробнее...
спросили в String h
Сортировка одномерного массива
Доброго времени суток.

Странная какая-то сортировака у вас. Вот пример сортировки пузырьком.
подробнее...

Паскаль
Создать собственный тип:

type mas = array [0..20] of String;
var a: mas;подробнее...
 

Ответить на вопрос:

Имя*

E-mail:*

Текст ответа:*
Проверочный код(введите 22):*