Другие языки программирования и технологии
Как задать двумерный динамический массив в Паскале?
Количество строк и столбцов задается пользователем в ходе выполнения программы. Пробовала определить таким образом: type matr=array[0..0,0..0] of integer; ptr=^matr; var mas:ptr; Выделяем память: getmem(mas,strok*stolb*sizeof(integer); К элементу матрицы обращаемся так: a^[i,j] Но при просмотре матрицы ее элементы выводятся не по порядку. Вводим: 1 2 3 4 5 6 7 8 9 При выводе: 1 2 4 4 5 7 7 8 9 Подскажите пожалуйста, в чем может быть ошибка.
Двумерные массивы Паскаля – матрицы
Двумерный массив в Паскале трактуется как одномерный массив, тип элементов которого также является массивом (массив массивов) . Положение элементов в двумерных массивах Паскаля описывается двумя индексами. Их можно представить в виде прямоугольной таблицы или матрицы.
Рассмотрим двумерный массив Паскаля размерностью 3*3, то есть в ней будет три строки, а в каждой строке по три элемента:
Каждый элемент имеет свой номер, как у одномерных массивов, но сейчас номер уже состоит из двух чисел – номера строки, в которой находится элемент, и номера столбца. Таким образом, номер элемента определяется пересечением строки и столбца. Например, a 21 – это элемент, стоящий во второй строке и в первом столбце. http://www.pascal.helpov.net/index/two-dimensional_arrays_pascal_programming По этой ссылке Вы найдёте полный и подробный ответ.
Двумерный массив в Паскале трактуется как одномерный массив, тип элементов которого также является массивом (массив массивов) . Положение элементов в двумерных массивах Паскаля описывается двумя индексами. Их можно представить в виде прямоугольной таблицы или матрицы.
Рассмотрим двумерный массив Паскаля размерностью 3*3, то есть в ней будет три строки, а в каждой строке по три элемента:

В Паскале такого сделать не получится. Просто язык уже старый, там многого нет.
Зато в современных языках типа Java или C# такое можно делать с легкостью.
Зато в современных языках типа Java или C# такое можно делать с легкостью.
пиши в агент или аську 452371863
У тебя компилятор не знает, как по двумерному индексу найти нужный элемент - реальные границы изменения индексов ему не заданы. Так просто это сделать не получится.
В стандартном Паскале работа с динамическими массивами вообще делается через пень-колоду, фактически это был язык обучения программированию, а не реального программирования, чего стоит хтя бы передача массивов в функцию.
Для работы с двумерными динамическими массивами в стандартном Pascal есть два способа - объявить одномерный динамический массив и пересчитывать каждую комбинацию значений индексов явно или через специальную функцию в значение единственного индекса или объявить массив указателей на динамические массивы и потом выделить память под эти массивы, что еще хуже. Так что лучше и проще первый способ.
В более современных версиях Pascal, вроде PascalABC.NET, поддержка динамических массивов реализована нормально, без трюков с указателями и пересчетом индексов.
В стандартном Паскале работа с динамическими массивами вообще делается через пень-колоду, фактически это был язык обучения программированию, а не реального программирования, чего стоит хтя бы передача массивов в функцию.
Для работы с двумерными динамическими массивами в стандартном Pascal есть два способа - объявить одномерный динамический массив и пересчитывать каждую комбинацию значений индексов явно или через специальную функцию в значение единственного индекса или объявить массив указателей на динамические массивы и потом выделить память под эти массивы, что еще хуже. Так что лучше и проще первый способ.
В более современных версиях Pascal, вроде PascalABC.NET, поддержка динамических массивов реализована нормально, без трюков с указателями и пересчетом индексов.
Delphi и всё там проще и легче
<c#>
<c#>
Гугл в помощь!
Похожие вопросы
- двумерный динамический массив в паскале
- Сортировка двумерного динамического массива
- Дан двумерный динамический массив, надо составить программу, которая меняет местами две любые строки
- как вернуть двумерный динамический массив из функции С++
- ООП в c++. Совсем недавно познакомился с деструкторами класса и решил опробовать их на двумерном динамическом массиве.
- вопрос о динамических массивах в fortran
- динамический массив в Visual C++
- Помогите,пожалуйста,решить задачу на двумерные массивы,в паскале.(задача вн.)Спасибо.
- Аналог ассоциативного массива в Паскале.
- Написать программу в VBA арифметической прогрессии в динамическом массиве.