![]() |
|
сделать стартовой | добавить в избранное |
![]() |
Компьютеры, Программирование
Программное обеспечение
Одномерные и двумерные массивы (таблицы) |
Массив — это пронумерованная последовательность величин одинакового типа, обозначаемая одним именем. Элементы массива располагаются в последовательных ячейках памяти, обозначаются именем массива и индексом. Каждое из значений, составляющих массив, называется его компонентой (или элементом массива). Массив данных в программе рассматривается как переменная структурированного типа. Массиву присваивается имя, посредством которого можно ссылаться как на массив данных в целом, так и на любую из его компонент. Переменные, представляющие компоненты массивов, называются переменными с индексами в отличие от простых переменных, представляющих в программе элементарные данные. Индекс в обозначении компонент массивов может быть константой, переменной или выражением порядкового типа. Если за каждым элементом массива закреплен только один его порядковый номер, то такой массив называется линейным. Вообще количество индексов элементов массива определяет размерность массива. По этом признаку массивы делятся на одномерные (линейные), двумерные, трёхмерные и т.д. Пример: числовая последовательность четных натуральных чисел 2, 4, 6, ., представляет собой линейный массив, элементы которого можно обозначить А=2 (К 1), где К — номер элемента, а 2, 4, 6, ., — значения. Индекс (порядковый номер элемента) записывается в квадратных скобках после имени массива. Например, A — шестой элемент массива D. Для размещения массива в памяти ЭВМ отводится поле памяти, размер которого определяется типом, длиной и количеством компонент массива. В языке Pascal эта информация задается в разделе описаний. Массив описывается так: имя массива : Array [начальное значение индекса.конечное значение индекса] Of базовый тип; Например, Var B : Array Of Char; — описывается массив В, состоящий из 5 элементов и символьный массив R, состоящий из 34 элементов. Для массива В будет выделено 5 6=30 байт памяти, для массива R — 1 34=34 байта памяти. Базовый тип элементов массива может быть любым, за исключением файлового. Заполнить массив можно следующим образом: 1) с помощью оператора присваивания. Этот способ заполнения элементов массива особенно удобен, когда между элементами существует какая-либо зависимость, например, арифметическая или геометрическая прогрессии, или элементы связаны между собой реккурентным соотношением. Задача 1. Заполнить одномерный массив элементами, отвечающими следующему соотношению: a1=1; a2=1; ai=ai-2 ai-1 (i = 3, 4, ., ). Read( ); {Ввод количества элементов} A := A; Другой вариант присваисвания значений элементам массива — заполнение значениями, полученными с помощью датчика случайных чисел. Задача 2. Заполнить одномерный массив с помощью датчика случайных чисел таким образом, чтобы все его элементы были различны. Program Crea e; ype Mas = Array Of I eger; Var A : Mas; I, J, : By e; Log : Boolea ; Begi Wri e(''); ReadL ( ); ra domize; A := -32768 ra dom(65535); For I := 2 o Do Begi Log := rue; Repea A := -32768 ra dom(65535); J := 1; While Log a d (j &l ;= i - 1) Do begi Log := a; j := j 1 E d U il Log E d; For i := 1 o Do Wri e(a:7); wri el E d.
2) ввод значений элементов массива с клавиатуры используется обычно тогда, когда между элементами не наблюдается никакой зависимости. Например, последовательность чисел 1, 2, -5, 6, -111, 0 может быть введена в память следующим образом: Program Vvod; Var , I : I eger; A : Array Of I eger; Begi Wri e('Введите количество элементов массива '); ReadL ( ); FOR I := 1 O DO Begi Wri e('Введите A) E d. Над элементами массивами чаще всего выполняются такие действия, как а) поиск значений; б) сортировка элементов в порядке возрастания или убывания; в) подсчет элементов в массиве, удовлетворяющих заданному условию. Cумму элементов массива можно подсчитать по формуле S=S A первоначально задав S=0. Количество элементов массива можно подсчитать по формуле К=К 1, первоначально задав К=0. Произведение элементов массива можно подсчитать по формуле P = P A, первоначально задав P = 1. Задача 3. Дан линейный массив целых чисел. Подсчитать, сколько в нем различных чисел. {Подсчет количества различных чисел в линейном массиве. ИДЕЯ РЕШЕНИЯ: заводим вспомогательный массив, элементами которого являются логические величины (False - если элемент уже встречался ранее, rue - иначе)} Program Razlich ye Eleme y; Var I, , K, Kol : I eger; A : Array Of Boolea ; Begi Wri e('Введите количество элементов массива: '); ReadL ( ); FOR I := 1 O DO Begi Wri e('A := rue; {Заполняем вспомогательный массив значениями rue} E d; Kol := 0; {переменная, в которой будет храниться количество различных чисел} FOR I := 1 O DO IF Lo HE Begi Kol := Kol 1; FOR K := I O DO {Во вспомогательный массив заносим значение False, если число уже встречалось ранее или совпадает с текущим элементом A; E d; Wri eL ('Количество различных чисел: ', Kol) E D. Тест: = 10; элементы массива - 1, 2, 2, 2, -1, 1, 0, 34, 3, 3. Ответ: 6. Задача 4. Дан линейный массив. Упорядочить его элементы в порядке возрастания. {Сортировка массива выбором (в порядке возрастания). Идея решения: пусть часть массива (по K-й элемент включительно) отсортирована. Нужно найти в неотсортированной части массива минимальный элемент и поменять местами с (K 1)-м} Program Sor irovka; Var , I, J, K, Pr : I eger; A : Array Of I eger; Begi Wri e('Введите количество элементов: '); ReadL ( ); For I := 1 o Do Begi Wri e('Введите A); E d; Wri eL ; For I := 1 o - 1 Do Begi K := I; For J := I 1 o Do If A := A := Pr; E d; For I := 1 o Do Wri e(A, ' '); E d. Тест: = 10; элементы массива - 1, 2, 2, 2, -1, 1, 0, 34, 3, 3. Ответ: -1, -1, 0, 1, 2, 2, 2, 3, 3, 34. Если два массива являются массивами эквивалентых типов, то возможно присваивание одного массива другому. При этом все компоненты присваиваемого массива копируются в тот массив,оторому присваивается значение. Типы массивов будут эквивалентными, если эти массивы описываются совместно или описываются идентификатором одного и того же типа. Например, в описании ype Massiv = Array Of Real; Var A, B : Massiv; C, D : Array Of Real; типы переменных A, B эквивалентны, и поэтому данные переменные совместимы по присваиванию; тип переменных C, D также один и тот же, и поэтому данные переменные также совместны по присваиванию.
Но тип переменных C, D не эквивалентен типам переменных A, B, E, поэтому, например, A и D не совместны по присваиванию. Эти особенности необходимо учитывать при работе с массивами. При решении практических задач часто приходится иметь дело с различными таблицами данных, математическим эквивалентом которых служат матрицы. Такой способ организации данных, при котором каждый элемент определяется номером строки и номером столбца, на пересечении которых он расположен, называется двумерным массивом или таблицей. Например, данные о планетах Солнечной системы представлены следующей таблицей: Планета Расст. до Солнца Относ. обьем Относ. масса Меркурий 57.9 0.06 0.05 Венера 108.2 0.92 0.81 Земля 149.6 1.00 1.00 Марс 227.9 0.15 0.11 Юпитер 978.3 1345.00 318.40 Сатурн 1429.3 767.00 95.20 Их можно занести в память компьютера, используя понятие двумерного массива. Положение элемента в массиве определяется двумя индексами. Они показывают номер строки и номер столбца. Индексы разделяются запятой. Например: A. Заполняется двумерный массив аналогично одномерному: с клавиатуры, с помощью оператора присваивания. Например, в результате выполнения программы: Program Vvod2; Var I, J : I eger; A : Array Of I eger; Begi FOR I := 1 O 3 DO FOR J := 1 O 2 DO A := 456 I E d. элементы массива примут значения A = 458; A = 459. При описании массива задается требуемый объем памяти под двумерный массив, указываются имя массива и в квадратных скобках диапазоны изменения индексов. При выполнении инженерных и математических расчетов часто используются переменные более чем с двумя индексами. При решении задач на ЭВМ такие переменные представляются как компоненты соответственно трех-, четырехмерных массивов и т.д. Однако описание массива в виде многомерной структуры делается лишь из соображений удобства программирования как результат стремления наиболее точно воспроизвести в программе объективно существующие связи между элементами данных решаемой задачи. Что же касается образа массива в памяти ЭВМ, то как одномерные, так и многомерные массивы хранятся в виде линейной последовательности своих компонент, и принципиальной разницы между одномерными и многомерными массивами в памяти ЭВМ нет. Однако порядок, в котором запоминаются элементы многомерных массивов, важно себе представлять. В большинстве алгоритмических языков реализуется общее правило, устанавливающее порядок хранения в памяти элементов массивов: элементы многомерных массивов хранятся в памяти в последовательности, соответствующей более частому изменению младших индексов. Задача 5. Заполнить матрицу порядка по следующему образцу: 1 2 3 . -2 -1 2 1 2 . -3 -2 -1 3 2 1 . -4 -3 -2 . . . . . . . -1 -2 -3 . 2 1 2 -1 -2 . 3 2 1 Program Massiv12; Var I, J, K, : I eger; A : Array Of I eger; Begi Wri e('Введите порядок матрицы: '); ReadL ( ); For I := 1 o Do For J := I o Do Begi A; E d; For I := 1 o Do Begi Wri eL ; For J := 1 o Do Wri e(A:4); E d E d. Задача 6. Дана целочисленная квадратная матрица. Найти в каждой строке наибольший элемент и поменять его местами с элементом главной диагонали.
speedbutton и, если да, то как это сделать? Например, если в вашем проекте используется TDBGrid, то иконки кнопок компонента DBNavigator могут линковаться вашей программой, и их можно загрузить для использования в ваших speedbutton следующим образом: SpeedButton.Caption := ''; SpeedButton1.Glyph.LoadFromResourcename(HInstance,'DBN_REFRESH'); SpeedButton1.NumGlyphs := 2; Другие зарезервированные имена: DBN_PRIOR, DBN_DELETE, DBN_CANCEL, DBN_EDIT, DBN_FIRST, DBN_INSERT, DBN_LAST, DBN_NEXT, DBN_POST Все имена должны использовать верхний регистр. – Dennis Passmore StringGrid Обновление картинки в ячейке StringGrid SottNick советует: Если в таблице вы используете событие OnDrawCell для помещения в ячейку рисунка, причем различного, в зависимости, например, от соответствующего значения в двумерном массиве, и вам надо, чтобы после изменения значения в массиве обновилось изображение (Refresh не подходит, т.к. будет мелькать), то измените значение у ячейки (DrawGrid не годится): StringGrid1.Cells[i,j]:=''; или StringGrid1.Cells[i,j]:=StringGrid1.Cells[i,j];
1. Алгоритмические языки: обработка одномерных массивов
2. Работа с двумерными числовыми массивами
4. Законы XII таблиц - памятник рабовладельческого права (Контрольная)
5. Теория государства и права (в таблицах)
10. Оформление выходных документов в электронных таблицах QUATTRO PRO
11. Обработка табличной информации с помощью сводных таблиц средствами MicroSoft Excel
13. Использование электронных таблиц в Power Poin
14. Таблица по строению глаза человека
15. Анализ видов наказаний (таблица)
17. МОДЕЛЬ ЯДРА АТОМА И ТАБЛИЦА ЭЛЕМЕНТОВ
18. Таблица растворимости солей. Периодическая система Д.И. Менделева
20. МОДЕЛЬ ЯДРА АТОМА И ТАБЛИЦА ЭЛЕМЕНТОВ
25. Передний край теоретической физики: теплопроводность одномерного кристалла
26. Литература - Педиатрия (Таблица тестов для оценки физического и психического
27. Дисфункциональные маточные кровотечения (таблица)
28. Таблица основных динамических оттенков
29. О потребностях человека и таблице Менделеева
30. Методы обучения и их назначение (таблица)
31. Сводная таблица по курсу «Возрастная психология»
32. Статистические таблицы и статистические графики - основные способы наглядного изображения данных
34. Таблица по химии
35. Массивы
36. Статистическая сводка. Группировка таблицы
41. Ответственность за правонарушения (КоАП РФ) с 1 июля 2002 года. Таблица штрафов.
42. Современная форма таблицы Менделеева
44. Методы мониторинга короткопериодных деформаций массива горных пород
45. Геохронологическая таблица
46. Таблица времен
47. Решение задачи одномерной упаковки с помощью параллельного генетического алго-ритма
48. Методы работы с массивами на языке BASIC
49. Обработка данных таблицы в Excel
50. Применение электронных таблиц Excel 97
51. Сортировка массивов методом вставок
52. Массивы элементов управления
53. Модуль для работы с ассоциативными массивами в C++ Builder
57. Интервальные типы данных. Оператор TYPE. Массивы
58. Квантовый эффект Холла в двумерных системах
59. Статистические таблицы и графики
60. Простейшие бифункциональные природные соединения - мостик к массиву природных соединений
62. Болотные массивы
63. Оценка напряженно-деформированного состояния массива пород
64. Закон ХІІ таблиц
65. Алгоритмические языки: обработка массивов
66. Відстежування змін за допомогою стовпців і таблиць аудиту
67. Использование электронных таблиц
68. Написание программы для удаления элементов и очистки внешних таблиц
69. Обработка массивов данных в среде Turbo Pascal
73. Работа с таблицей Excel как с базой данных
74. Работа с электронными таблицами
75. Разработка электронных таблиц
76. Робота з данними в середовищі електронних таблиць Microsoft Excel
78. Создание сайта "Электронные таблицы Excel"
79. Статистические функции в Excel. Электронная таблица как база данных. Организация разветвлений
80. Створення та робота з таблицями у Microsoft Excel, Access
81. Створення таблиць за допомогою SQL-запитів в середовищі DELPHI
82. Условная функция и логические выражения в электронных таблицах Microsoft Exel 97.
83. Формирование вагонопотоков в электронных таблицах
84. Выявление функциональной зависимости в массиве данных
85. Двумерная графика системы Maple
89. Одномерное шкалирование. Одномерное развертывание. Типы шкал по Кумбсу
90. Проектирование системы электроснабжения для жилого массива
91. Сводка и группировка статистических материалов. Статистические таблицы