Pascal-Паскаль
Программирование. Одномерные массивы Pascal-Паскаль
- Скачено бесплатно: 26859
- Куплено: 414
- Pascal-Паскаль->Программирование. Одномерные массивы Pascal-Паскаль
Программирование. Одномерные массивы Pascal-Паскаль
- Массив как однородная совокупность элементов
- Индекс массива
- Вычисление индекса массива Паскаля
- Основные действия с массивами Паскаля
- Ввод массива Паскаля
- Вывод массива Паскаля
- Пример решения задачи с использованием массивов Паскаля
Понятие структуры
До сих пор мы работали с простыми типами данных – логический ( boolean ), целый ( integer , word , byte , longint ), вещественный ( real ), символьный ( char ). Любой алгоритм можно запрограммировать с помощью этих четырех базовых типов. Но для обработки информации о многообразном реальном мире требуются данные, имеющие более сложное строение. Такие сложные конструкции, основанные на простейших скалярных типах, называются структурами. Структура – некоторый составной тип данных, составленный из базовых скалярных. Если структура не изменяет своего строения на протяжении всего выполнения программы, в которой она описана, то такую структуру называют статической.
Массив – однородная совокупность элементов
Самой распространенной структурой, реализованной практически во всех языках программирования, является массив.
Массивы состоят из ограниченного числа компонент, причем все компоненты массива имеют один и тот же тип, называемый базовым. Структура массива всегда однородна. Массив может состоять из элементов типа integer , real или char , либо других однотипных элементов. Из этого, правда, не следует делать вывод, что компоненты массива могут иметь только скалярный тип.
Другая особенность массива состоит в том, что к любой его компоненте можно обращаться произвольным образом. Что это значит? Программа может сразу получить нужный ей элемент по его порядковому номеру (индексу).
Индекс массива
Номер элемента массива называется индексом. Индекс – это значение порядкового типа, определенного, как тип индекса данного массива. Очень часто это целочисленный тип ( integer , word или byte ), но может быть и логический и символьный.
Описание массива в Паскале. В языке Паскаль тип массива задается с использованием специального слова array (англ. – массив), и его объявление в программе выглядит следующим образом:
Type < имя _ типа >= array [ I ] of T;
где I – тип индекса массива, T – тип его элементов.
Можно описывать сразу переменные типа массив, т.е. в разделе описания переменных:
Var a,b: array [ I ] of T;
Обычно тип индекса характеризуется некоторым диапазоном значений любого порядкового типа : I 1 .. I n . Например, индексы могут изменяться в диапазоне 1..20 или ‘ a ‘..’ n ‘.
При этом длину массива Паскаля характеризует выражение:
ord ( I n )- ord ( I 1 )+1.
Вот, например, объявление двух типов: vector в виде массива Паскаля из 10 целых чисел и stroka в виде массива из 256 символов:
Type
Vector=array [1..10] of integer;
Stroka=array [0..255] of char;
С помощью индекса массива можно обращаться к отдельным элементам любого массива, как к обычной переменной: можно получать значение этого элемента, отдельно присваивать ему значение, использовать его в выражениях.
Опишем переменные типа vector и stroka :
Var a: vector;
c: stroka;
далее в программе мы можем обращаться к отдельным элементам массива a или c . Например, a [5]:=23; c [1]:=’ w ‘; a [7]:= a [5]*2; writeln ( c [1], c [3]).
Вычисление индекса массива Паскаля
Индекс массива в Паскале не обязательно задавать в явном виде. В качестве индекса массива можно использовать переменную или выражение, соответствующее индексному типу. Иначе говоря, индексы можно вычислять.
Этот механизм – весьма мощное средство программирования. Но он порождает распространенную ошибку: результат вычислений может оказаться за пределами интервала допустимых значений индекса, то есть будет произведена попытка обратиться к элементу, которого не существует. Эта типичная ошибка называется «выход за пределы массива».
Пример программы с ошибкой массива Паскаля
Program primer _ error ;
Type
vector=array [1..80] of word;
var
n: integer;
a: vector;
begin
n:=45;
a[n*2]:=25;
end .
Хотя данная программа полностью соответствует синтаксису языка, и транслятор «пропустит» ее, на стадии выполнения произойдет ошибка выхода за пределы массива Паскаля. При n =45 выражение n *2=90, компьютер сделает попытку обратиться к элементу массива a [90], но такого элемента нет, поскольку описан массив размерностью 80.
Будем считать, что хорошая программа должна выдавать предупреждающее сообщение в случае попытки обращения к несуществующим элементам массива. Не лишним будет проверять возможный выход как за правую, так и за левую границы массива, ведь не исключено, что в результате вычисления значения выражения получится число, находящееся левее границы массива Паскаля.
Из всего этого следует сделать вывод: программисту надо быть очень аккуратным при работе с индексами массива.
Основные действия с массивами Паскаля
Как известно, определение типа данных означает ограничение области допустимых значений, внутреннее представление в ЭВМ, а также набор допустимых операций над данными этого типа. Мы определили тип данных как массив Паскаля. Какие же операции определены над этим типом данных? Единственное действие, которое можно выполнять над массивами целиком, причем только при условии, что массивы однотипны, – это присваивание. Если в программе описаны две переменные одного типа, например,
Var
a , b : array [1..10] of real ;
то можно переменной a присвоить значение переменной b ( a := b ). При этом каждому элементу массива a будет присвоено соответствующее значение из массива b. Все остальные действия над массивами Паскаля производятся поэлементно (это важно!).
Ввод массива Паскаля
Для того чтобы ввести значения элементов массива, необходимо последовательно изменять значение индекса, начиная с первого до последнего, и вводить соответствующий элемент. Для реализации этих действий удобно использовать цикл с заданным числом повторений, т.е. простой арифметический цикл, где параметром цикла будет выступать переменная – индекс массива Паскаля. Значения элементов могут быть введены с клавиатуры или определены с помощью оператора присваивания.
Пример фрагмента программы ввода массива Паскаля
Var
A : array [1..10] of integer ;
I : byte ;
Begin
For i:=1 to 10 do
Readln (a[i]); < ввод i- го элемента производится с клавиатуры >
Рассмотрим теперь случай, когда массив Паскаля заполняется автоматически случайными числами, для этого будем использовать функцию random ( N ).
Пример фрагмента программы заполнения массива Паскаля случайными числами
Var
A: array [1..10] of integer;
I : byte ;
Begin
For i :=1 to 10 do
A [ i ]:= random (10); < i -му элементу массива присваивается «случайное» целое число в диапазоне от 0 до 10>
Вывод массива Паскаля
Вывод массива в Паскале осуществляется также поэлементно, в цикле, где параметром выступает индекс массива, принимая последовательно все значения от первого до последнего.
Пример фрагмента программы вывода массива Паскаля
Var
A: array [1..10] of integer;
I : byte ;
Begin
For i :=1 to 10 do
Write ( a [ i ],’ ‘);
Вывод можно осуществить и в столбик с указанием соответствующего индекса. Но в таком случае нужно учитывать, что при большой размерности массива все элементы могут не поместиться на экране и будет происходить скроллинг, т.е. при заполнении всех строк экрана будет печататься очередной элемент, а верхний смещаться за пределы экрана.
Пример программы вывода массива Паскаля в столбик
Var
A: array [1..10] of integer;
I : byte ;
Begin
For i:=1 to 10 do
Writeln (‘a[‘, i,’]=’, a[i]); < вывод элементов массива в столбик >
На экране мы увидим, к примеру, следующие значения:
a [1]=2
a [2]=4
a [3]=1 и т.д.
Пример решения задачи с использованием массивов Паскаля
Задача: даны два n -мерных вектора. Найти сумму этих векторов.
Решение задачи:
-
Входными данными в этой задаче будут являться два одномерных массива. Размер этих массивов может быть произвольным, но определенным. Т.е. мы можем описать заведомо большой массив, а в программе определить, сколько элементов реально будет использоваться. Элементы этих массивов могут быть целочисленными. Тогда описание будет выглядеть следующим образом:
var a , b : array [1..100] of integer ;
Ход решения задачи:
- определим количество элементов (размерность) массивов, введем значение n ;
- введем массив a ;
- введем массив b ;
- в цикле, перебирая значения индекса i от 1 до n , вычислим последовательно значения элементов массива c по формуле:
c [ i ]= a [ i ]+ b [ i ];
Текст программы :
Пример программы суммирования векторов
Program summa;
Var
a, b, c: array [1..100] of integer;
I, n: byte;
Begin
Write (‘введите размерность массивов:’);
Readln(n);
For i:=1 to n do
Readln (a[i]); < ввод массива a>
For i:=1 to n do
Readln (b[i]); < ввод массива b>
For i:=1 to n do
C[i]:=a[i]+b[i]; < вычисление суммы массивов >
For i:=1 to n do
write (c[i],’ ‘); < вывод массива с >
end.
Программирование
Исходники Pascal (127)
Справочник
Справочник по паскалю: директивы, функции, процедуры, операторы и модули по алфавиту
Счетчики
2008—2023 © pascal.helpov.net | All Rights Reserved
Одномерные массивы языка Pascal: описание, инициализация, сканирование всех элементов
Здравствуйте! Вас приветствует Александр Георгиевич – профессиональный репетитор по информатике, математике и программированию, а также автор данного образовательного веб-ресурса. Если у вас есть недопонимания в том, как устроены одномерные массивы в языке программирования Паскаль, как правильно производить инициализацию элементов массива, как реализовать сканирование всех элементов одномерных массивов, то срочно записывайтесь ко мне на индивидуальные уроки по информатике и ИКТ. Одномерные массивы – тема чрезвычайно объемная, глубокая и интересная. На уроке мы решим все интересующие вас задачи, связанные с обработкой одномерных массивов Паскаль.

Инициализация одномерных массивов Паскаль
Давайте сходу вспомним определение одномерного массива.
| Одномерный массив Паскаль представляет собой фиксированное число однотипных элементов, которые объединены под одним именем, при этом каждый элемент массива имеет свой уникальный номер, а номера идут по порядку. |
Прежде чем приступать к инициализации элементов одномерного массива Pascal, сам массив необходимо описать. Сразу небольшая ремарка: существуют типизированные константные массивы, а существуют массивы, которые воспринимаются компилятором как простые переменные. В данной статье повествование касается исключительно одномерных массивов Паскаль, которые мы объявляем в разделе var, то есть в разделе декларации переменных.
Рассмотрим два способа инициализации элементов одномерного массива в языке Паскаль.
1 способ. Ввод с клавиатуры абсолютно каждого элемента массива. Например, мы описали одномерный массив, состоящий из 10 элементов целочисленного типа данных (допустим, Integer). Затем запускаем цикл по всем элементам и запрашиваем ввод значения с клавиатуры от пользователя. Рассмотрим фрагмент программы на языке Pascal:
2 способ. Инициализация одномерных массивов Паскаль при помощи генератора случайных чисел. Данный способ очень популярен, когда требуется много раз подряд протестировать правильность написания какой-либо программы, содержащей обработку одномерных массивов. Например, мы описали одномерный массив Pascal, состоящий из 8 элементов целочисленного типа данных (допустим, Word). Затем запускаем арифметический цикл for-to-do, который сканирует все элементы массива от первого до последнего и случайным образом присваивает число в диапазоне от 1 до 99. Рассмотрим фрагмент программы на языке Pascal:
Что такое сканирование одномерных массивов Pascal?
Под сканированием следует понимать последовательный просмотр всех элементов одномерного массива Pascal. Как правило, сканирование производится от элемента с индексом 1, но не всегда. Многое зависит от алгоритма, использующегося в решении.
Рассмотрим решение задачи, в которой необходимо два раза прибегать к сканированию всех элементов заданного массива.
Условие задачи. Дан одномерный массив, состоящий из 12 элементов типа данных shortInt. Значения элементов заполняются случайным образом и находятся в диапазоне от -50 до +50. Найти сумму значений элементов заданного одномерного массива.
Просканировать элементы исходного одномерного массива Паскаль нам потребуется два раза:
- Когда производится инициализация элементов исходного массива и вывод текущего значения на экран пользователя.
- Когда производится подсчет суммы значений всех элементов исходного массива.
Примечание: в более-менее профессиональной программе, описанных два сканирования можно объединить в один, то есть вести заполнение и подсчет суммы параллельно.
А сейчас я предлагаю вашему вниманию мультимедийное решение, в котором показана реализация задачи средней сложности и в котором интенсивно используется обработка одномерных массивов, как строковых, символьных так и целочисленных .
Остались вопросы?
Цель данной статьи – показать вам основные приемы инициализации одномерных массивов Pascal, а также познакомить с операцией сканирования. Я прекрасно понимаю, что тема довольно сложная, вариативная и требует более глубоко погружения, именно поэтому я предлагаю вам записаться на мои индивидуальные уроки по информатике, математике и программированию. Если у вас скоро контрольная на обработку массивов, а может требуется выполнить добрый десяток лабораторных по программированию, в которых требуется обработка одномерных массивов Pascal, тогда смело мне звоните на мобильный телефон и записывайтесь на первое занятие.
Урок 14. Одномерные массивы. Работа с элементами

Сегодня мы с вами наконец-то начинаем новую тему — одномерные массивы .
Одномерные массивы. Определение.
Одномерный массив — это фиксированное количество элементов одного и того же типа, объединенных одним именем, где каждый элемент имеет свой номер. Обращение к элементам массива осуществляется с помощью указания имени массива и номеров элементов.
var a : array [1..N] of integer; //или type arr = array[1..N] of integer; var a: arr;
Между именем типа и именем переменной ставится знак «двоеточие». Array — служебное слово (в переводе с английского означает «массив», «набор»); [1..N] — в квадратных скобках указывается номер первого элемента, затем, после двух точек, номер последнего элемента массива; of — служебное слово (в переводе с английского «из»); integer — тип элементов массива.
Индексом могут быть не только натуральные числа: мы можем написать так: [0..10], [-29..45], [‘a’..’z’], [false..true] — то есть нам подходят любые символы и числа — главное соблюсти следующее условие: левая часть меньше правой. Для того чтобы определить, что меньше — восклицательный знак(‘!’) или точка(‘.’) используем таблицу ASCII и функции Ord() и Chr().
Как же производится ввод одномерного массива?
Для того чтобы ввести или вывести значения элементов такого массива, используем цикл с параметром(или с постусловием, или с предусловием — в общем, любой цикл. ).
for i := 1 to N do read(a[i]); //где a[i] -- элемент одномерного массива a с индексом (порядковым номером) i.
Как видите, ничего страшного в массивах нет. Массивы применяют в тех случаях, когда нельзя обойтись одной-двумя переменными (примеры таких задач мы рассматривали в решении задач из блока Series). В случаях, когда после ввода последовательности целиком пользователю необходимо обратиться к переменным в середине последовательности, в начале, поменять их значения местами, отсортировать.
Раз уж мы затронули тему задач из блока Series, давайте решим пару задачек оттуда с помощью массивов, а не тем увечным способом, которым нам приходилось пользоваться.
Одномерные массивы. Решение задач.
Series8. Дано целое число N и набор из N целых чисел. Вывести в том же порядке все четные числа из данного набора и количество K таких чисел.
var a: array[1..1000] of integer; k, N, i: integer; begin write('N = '); readln(N); write('Введите ', N, ' целых чисел: '); for i := 1 to N do read(a[i]); write('Чётные числа: '); for i := 1 to N do begin if a[i] mod 2 = 0 then begin Inc(k); write(a[i], ' '); end; end; writeln(); writeln('Количество четных чисел - ', k); end.
Series28. Дано целое число N и набор из N вещественных чисел: A1, A2, …, AN. Вывести следующие числа:
Исходное решение: Series28.
Более подробно про возведение числа в степень мы говорили в решении задачи for36.
var a: array[1..1000] of integer; N, i, j, n_pow: integer; d, r: real; begin write('N = '); readln(N); write('Введите ', N, ' целых чисел: '); for i := 1 to N do read(a[i]); for i := 1 to N do begin n_pow := N + 1 - i; d := a[i]; if n_pow mod 2 <> 0 then r := d else r := 1; //в r будет записываться результат while n_pow > 1 do begin n_pow := n_pow div 2; d := d * d; if n_pow mod 2 <> 0 then r := r * d; end; writeln(a[i], ' в степени ', N + 1 - i, ' равно ', r); end; end.
Ну и напоследок давайте разберём веселенькую задачу на длинную арифметику.
Задача. Найти факториал числа.
Мы уже решали эту задачу здесь(for19).
Научимся вычислять факториал натурального числа N. Факториал числа — это произведение чисел 1*2*3*…*(N-1 )*N (обозначается как N!). Сложность задачи в том, что уже 8!=40320, а 13!=6227020800. Типы данных Integer, Longlnt применимы весьма в ограниченном диапазоне натуральных чисел. Для представления факториала договоримся использовать массив. Пример:
| A[0] | A[1] | A[2] | A[3] | A[4] | A[5] | A[6] | A[7] | A[8] |
| 8 | 0 | 0 | 8 | 6 | 1 | 9 | 9 | 3 |
В массиве записано значение 11!=39916800. Каким образом? В А[0] фиксируется число занятых элементов массива, в А[1] — цифра единиц результата, в А[2] — цифра десятков результата, в А[3] — цифра сотен результата и т. д. Почему так, а не наоборот? Такая запись позволяет исключить сдвиг элементов массива при переносе значений в старший разряд. А сейчас наберите, как обычно, текст программы, выполните компиляцию и, выполните ее в пошаговом режиме, отслеживая изменение значений переменных при не очень большом значении N. Добейтесь полного понимания логики работы программы.
Для того чтобы выполнить программу в пошаговом режиме, нажмите «шаг без входа в подпрограмму» и перейдите в «локальные переменные».

const MaxN = 300; var A: array [0..MaxN] of integer; i, j, r, w, N: integer; begin Write('Введите число, факториал которого необходимо подсчитать: '); Read(N); A[0] := 1; A[1] := 1; j := 2; while (j begin r := 0; i := 1; while (i 0) Do begin w := A[i] * j + r; A[i] := w mod 10; r := w div 10; if A[A[0] + 1] <> 0 then Inc(A[0]); Inc(i); end; Inc(j); end; write('Факториал: '); for i := A[0] downto 1 Do Write(A[i]); end.
Одномерный массив — это конечное упорядоченное множество элементов. За первым элементом идет второй, за вторым — третий и т. д. Индекс может быть чем угодно — и целым числом, и символом. Но чаще мы всё-таки будем пользоваться следующим диапазоном: [1.. N].
На сегодня все! Если у вас еще остались вопросы о том, как работает программа выше, оставляйте их в комментариях. И очень скоро мы начнем решать задачи на массивы из задачника М. Э. Абрамяна.
Массивы
Массивы представляют собой ограниченное упорядоченное множество однотипных величин. Каждая отдельная величина называется элементом (компонентной) массива.
2. Какие типы данных могут быть элементами массива?
Тип элементов массива может быть любым, принятым в языке Паскаль, кроме файлового типа. Этот тип называется базовым типом.
3. Как описывается одномерный массив?
Согласно синтаксису языка Паскаль, массив можно описывать двумя способами. Первый способ – в разделе описания переменных var . Второй способ – с использованием описания собственного типа в разделе type .
Способ 1. Описание одномерного массива в разделе описания переменных var.
var m1:array [1..100] of integer; // массив из 100 целых чисел m2:array [1..50] of real; // массив из 50 вещественных чисел m3:array [-20..30] of char; // массив из 51 символа m4:array [5..5] of boolean; // массив, который содержит 1 элемент типа boolean
Способ 2. Описание одномерного массива с использованием раздела описания type .
type TM1 = array [1..100] of integer; // массив из 100 целых чисел TM2 = array [1..50] of real; // массив из 50 вещественных чисел TM3 = array [-20..30] of char; // массив из 51 символа TM4 = array [5..5] of boolean; // массив, который содержит 1 элемент типа boolean var m1:TM1; m2:TM2; m3:TM3; m4:TM4;
4. Как осуществляется доступ к элементам одномерного массива?
Пусть имеем следующее описание:
var m1:array [1..100] of integer; // массив из 100 целых чисел m2:array [1..50] of real; // массив из 50 вещественных чисел m3:array [-20..30] of char; // массив из 51 символа m4:array [5..5] of boolean; // массив, который содержит 1 элемент типа boolean
Тогда чтобы присвоить значение конкретному элементу массива можно написать:
m1[15] := 289; // в 15-й элемент массива заносится число 289 m2[50] := -3.85; // в 50-й элемент массива заносится число -3.85 m3[-8] := 'k'; m4[5] := true;
5. Пример фрагмента кода обнуления массива с именем M , содержащего 100 целых ( integer ) чисел.
var M:array [1..100] of integer; i:integer; begin for i := 1 to 100 do M[i]:=0; end;
6. Пример подсчета суммы элементов массива Mas , содержащего 50 вещественных ( real ) чисел.
var Mas:array [1..50] of real; // описание массива i:integer; sum:real; begin . sum := 0; // обнуление суммы for i:=1 to 50 do // поиск суммы sum := sum + Mas[i]; . end;
7. Пример поиска максимального элемента в массиве из 100 целых чисел.
var Mas:array [1..100] of integer; i:integer; max:integer; // max - максимальное значение begin . max:=Mas[1]; for i:=2 to 100 do if maxthen max:=Mas[i]; . end;
8. Пример определения наличия заданного элемента в массиве из 100 целых чисел.
В примере массив элементов содержится в переменной Mas , искомый элемент содержится в переменной num .
var Mas:array [1..100] of integer; i:integer; num:integer; // искомый элемент f_is:boolean; begin . f_is:=false; for i:=1 to 100 do if num=Mas[i] then f_is:=true; . end;
9. Пример сортировки одномерного массива Mas вещественных чисел методом вставки.
Фрагмент кода, который сортирует массив целых чисел, в котором максимальное количество элементов равно MaxItems . Элементы сортируются в порядке убывания.
const MaxItems = 100; var M:array [1..MaxItems] of integer; i,j:integer; t:integer; begin . for i:=1 to MaxItems-1 do for j:=i downto 1 do if M[j]1] then begin t:=M[j]; // обмен местами элементов M[j] и M[j+1] M[j]:=M[j+1]; M[j+1]:=t; end; . end;
10. Как в языке Паскаль осуществляется присвоение значения одного массива другому?
Фрагмент кода, в котором массиву M2 присваивается значение массива M1 . Массивы должны быть одного типа.
var M1, M2:array [1..MaxItems] of integer; begin . M2:=M1; . end;
11. Как осуществляется инициализация одномерного массива?
Инициализация одномерного массива осуществляется в разделе описания констант const .
В следующем фрагменте кода инициализируются два массива:
- массив из 3 элементов, которые являются вещественными числами;
- массив из 5 элементов, которые являются целыми числами.
const mr:array [1..3] of real = (0.45, 9.56, 3.7); // массив вещественных чисел mi:array [1..5] of integer = (2, -30, 0, -100, 23); // массив целых чисел
12. Пример описания и использования двумерного массива в программе?
Как и в случае с одномерными массивами существует два способа описания двумерных массивов.
Пример 1. Описание двумерного массива непосредственно в разделе var .
var Matr1:array [1..5, 1..6] of real; // матрица вещественных чисел размером 5*6 Matr2:array [1..20, -5..10] of real; // матрица вещественных чисел Matrix:array[1..10,1..10] of integer; // матрица целых чисел размером 10*10
Пример 2. Описание с использованием раздела type .
type TMatrReal_5_6 = array [1..5, 1..6] of real; TMatrReal = array [1..20, -5..10] of real; TMatrInt = array [1..10, 1..10] of integer; var Matr1:TMatrReal_5_6; // матрица вещественных чисел размером 5*6 Matr2:TMatrReal; // матрица вещественных чисел Matrix:TMatrInt; // матрица целых чисел размером 10*10
Пример присвоения значений элементам двумерного массива
Matr1[2, 3]:=2.93; // 2-я строка и 3-й столбец Matr2[20,-3]:=3.23; // строка с индексом 20 и столбец с индексом -3 Matrix[2,8]:=209;
При обращении в квадратных дужках первым указывается номер строки, вторым – номер столбца.
13. Примеры описания многомерных массивов.
В данном примере описывается трехмерный и четырехмерный массивы чисел.
type TM3 = array[1..5, 1..10, 1..20] of integer; // трехмерный массив целых чисел TM4 = array[1..2, 1..3, 1..5, 1..10] of real; // четырехмерный массив вещественных чисел var M3:TM3; // переменная типа TM3 M4:TM4; // переменная типа TM4 begin . M3[2,3,6]:=23; M4[2,1,3,9]:=398.93; . end;
14. Пример инициализации двумерного массива.
В следующем примере инициализируются двумерные массивы целых чисел которые описываются разными способами. Согласно синтаксису языка Паскаль инициализация массивов должна осуществляться в разделе описания констант ( const ).
type TMatr_2_2 = array [1..2, 1..2] of integer; const Matr23:array[1..2,1..3] of integer = ( (33, -6, 55), (20, 18, -9) ); Matr22:TMatr_2_2 = ((4, -6), (-3, 7));
15. Пример инициализации многомерного массива.
Инициализация трехмерного массива целых чисел:
type TM3 = array [1..2,1..3,1..4] of integer; const Mas3 : TM3 = ( (( 1, 2, 3, 4), ( 2, 1, 6, 5), ( 1, 4, 2, 3)), (( 1, 2, 0, 3), (-1,-2, 5, 2), ( 3, 1, 2, 4)) );
16. Пример обнуления двумерной матрицы целых чисел размером 10 * 10 .
В данном примере обнуляется матрица с именем Matr .
var Matr:array [1..10, 1..10] of integer; // описание матрицы i, j:integer; begin . // обнуление матрицы for i := 1 to 10 do for j := 1 to 10 do Matr[i,j]:=0; . end;
17. Пример поиска заданного элемента в матрице размером 20 * 20 целых чисел.
В данном примере num – искомый элемент, f_is – флажок, который определяет наличие элемента в матрице. Считается, что матрица Matr уже заполнена значениями.
var Matr:array [1..20, 1..20] of integer; f_is:boolean; num:integer; // искомое число i, j:integer; begin . f_is:=false; // сначала, считаем что элемента нет в матрице for i := 1 to 20 do for j := 1 to 20 do if Matr[i,j]=num then f_is:=true; // элемент найден . end;
18. Пример определения минимального значения в матрице вещественных чисел.
В данном примере искомое минимальное значение сохраняется в переменной min . Считается, что матрица Matr уже заполнена значениями.
var Matr:array [1..10, 1..10] of real; min:real; // искомое минимальное значение i, j:integer; begin . min:=Matr[1,1]; // принять, что min - это один из элементов матрицы for i := 1 to 10 do for j := 1 to 10 do if Matr[i,j]then min:=Matr[i,j]; . end;
19. Пример вычисления суммы элементов матрицы вещественных чисел.
В данном примере сумма элементов матрицы сохраняется в переменной sum . Считается, что матрица Matr уже заполнена значениями.
var Matr:array [1..10, 1..10] of real; suma:real; // искомая сумма элементов матрицы i, j:integer; begin . suma := 0; for i := 1 to 10 do for j := 1 to 10 do suma := suma + Matr[i,j]; . end;
20. Пример описания и использования одномерного массива структур типа BOOK (КНИГА).
Пусть имеем следующее описание:
type // описание структуры типа TBOOK (КНИГА) TBOOK = record Title:string; // Название книги Author:string; // Имя автора книги year:integer; // год издания price:real; // стоимость книги end; var BOOKS:array [1..100] of TBOOK; // массив из 100 структур типа TBOOK
Пример доступа к элементам массива структур BOOKS . В данном примере в элемент с индексом 3 массива BOOKS заносятся данные.
. begin . BOOKS[3].Title := 'Title of book 3'; BOOKS[3].Author := 'Author of book 3'; BOOKS[3].year := 1993; BOOKS[3].price := 23.45; . end;
21. Пример описания и использования массива строк (тип string ).
var MasStr:array [1..10] of string; // описание массива строк begin . // в 3-й элемент массива записать текст MasStr[3] := 'Array of text'; . end;
22. Пример описания и использования массива классов.
В данном примере описывается класс с именем TMyClass . В классе объявлены две переменные с именами x и y . Доступ к этим переменным есть общедоступным ( public ).
type // описание класса TMyClass = class public x:integer; // внутренние переменные класса y:integer; end; // описание массива классов TArrayClass = array [1..10] of TMyClass; . var MasClass:TArrayClass; . begin . // заполнить значения класса с индексом 2 MasClass[2].x:=25; MasClass[2].y:=30; . end;
Программирование: теория и практика
- C# (176)
- Практика (46)
- MS Visual Studio 2010 (34)
- MS Visual Studio 2017 (7)
- MS Visual Studio 2019 (13)
- ADO .NET (7)
- Практика (31)
- Borland C++ Builder 2007 (16)
- MS Visual Studio 2010 (18)
- Visual C++ (136)
- Практика (6)
- Теория (102)
- Практика (1)
- Теория (21)
- Практика (1)
- Теория (21)
- Практика (20)
- Delphi-7 (4)
- Embarcadero RAD Studio 2010 (18)
- Практика (4)
- Теория (92)
- SQL (5)
- Patterns. Паттерн State (Состояние). Структура. Реализация на C++ 19 ноября, 2023
- Patterns. Паттерн Abstract Factory. Решение задачи о составляющих компьютера 7 октября, 2023
- Patterns. Паттерн Prototype. Реализация схемы на C++ 22 сентября, 2023
- Patterns. Паттерн Composite (Компоновщик). Дерево. Реализация на C++ 18 сентября, 2023
- Patterns. Паттерны. Сравнение паттернов Abstract Factory, Factory Method и Prototype 12 сентября, 2023
- Patterns. Паттерн Factory Method (Фабричный метод). Реализация структуры, простейший случай 6 сентября, 2023
- Patterns. Паттерн Bridge. Реализация структуры на C++ 6 сентября, 2023
- Паттерны проектирования. Паттерн Facade (Фасад) 29 августа, 2023
- SQL. Числовые типы данных. Обзор. Примеры 25 августа, 2023
- C++. Наследование шаблонных классов. Добавление нового типа в унаследованных классах 9 августа, 2023
При использовании материалов сайта, ссылка на сайт обязательна.
- Практика (46)