Урок из серии: «Язык программирования Паскаль»
На предыдущих уроках мы рассмотрели алгоритмы работы с элементами одномерного массива, в которых вы использовали данные из массива, но не изменяли его. На этом уроке вы научитесь вносить изменения в массив, заполнять новый массив по заданному правилу. Рассмотрим несколько типовых задач.
Изменение значений некоторых элементов
Задача 1. Заменить отрицательные элементы одномерного массива на противоположные по знаку.
Решение.
Массив обходим один раз. Если встретятся отрицательные элементы, присвоим им новое значение, противоположное по знаку.
Оформим алгоритм в виде процедуры. На входе и на выходе у нас один и тот же массив. На выходе некоторые его элементы могут быть изменены. Поэтому опишем его как выходной параметр (с ключевым словом var).
Procedure Zamena (Var m : MyArray;);
Var i : integer; Begin for i := 1 to n do if m[i] < 0 then m[i] := -m[i]; End;
Задача 2. Прибавить к каждому элементу одномерного массива число 25.
Что такое массив. Примеры. Теория. Array. Одномерный массив. Синтаксис. C++. Урок #25.
Преобразуем предыдущую процедуру. Присвоим каждому элементу массива новое значение, увеличив старое значение на 25.
Procedure Zamena2 (Var m : MyArray;);
Var i : integer; Begin for i := 1 to n do m[i] := m[i] + 25; End;
Задача 3. Если элемент массива чётный, то прибавить к нему первый элемент, если нечётный — прибавить последний. Первый и последний элементы не изменять.
Просматриваем все элементы массива со второго до предпоследнего.
Если элемент чётный (делиться на 2 без остатка), то увеличим его на значение первого элемента, иначе — на значение последнего элемента. На входе и на выходе у нас будет один и тот же массив. Описываем его как выходной параметр. Процедура будет иметь вид:
Procedure Zamena3(Var m: myarray); Var i : Integer;
Begin
For i:=2 To n-1 Do If (i<>1) And (i<>n) Then If m[i] Mod 2=0 Then m[i]:=m[i]+m[1] Else m[i]:=m[i]+m[n];
End
Заполнение массива по заданному правилу
Правила заполнения массивов могут быть разными. Рассмотрим два примера.
Задача 4. Даны два одномерных массива одинаковой размерности. Получить третий массив такой же размерности, каждый элемент которого равен сумме соответствующих элементов данных массивов.
Пусть даны два массива А и В, состоящие из пяти элементов. Создадим новый массив С, заполнив его по заданному правилу. Первому элементу массива присвоим сумму первых элементов массивов А и В, второму — сумму вторых элементов, и т. д.
i | 1 | 2 | 3 | 4 | 5 |
A | 16 | 4 | 9 | 10 | 11 |
B | 5 | 8 | 7 | 14 | 6 |
C | 21 | 12 | 16 | 24 | 17 |
Задачи с массивами | Pascal | Сумма и поиск элементов
Оформим алгоритм решения этой задачи в виде процедуры.
Procedure Sum_Array(a, b: myarray; Var c: myarray);
А, B — исходные массивы.С — результирующий массив.
Var i : Integer; Begin For i:=1 To n Do c[i]:=a[i]+b[i]; End;
Пример 5. Дан первый член арифметической прогрессии и её разность. Найти её первые n членов.
Пусть a1 — это первый член арифметической прогрессии, а p — это её разность. Тогда i-й член можно найти по формуле: а[i] = a[i-1] + p.
Опишем процедуру, которой передаём эти два параметра. Результатом выполнения будет являеться массив. Первый элемент его равен первому члену прогрессии, второй — второму и так далее.
Procedure Progress (a1, p: Integer; Var a: myarray);
a1 — первый член арифметической прогрессии;p- разность арифметической прогрессии.
Var i : Integer; Begin a[1]:=a1; For i:=2 To n Do a[i]:=a[i-1]+p End;
Работа с несколькими массивами
Пример 6. Даны два одномерных массива А и В. Найти их скалярное произведение.
Скалярным произведением двух векторов называется сумма произведений соответствующих координат. Координаты векторов можно хранить как одномерные массивы, тогда скалярное произведение можно вычислить по формуле:
где n — это количество элементов в массивах.
На входе у нас два параметра — два одномерных массива, на выходе один — число. В таком случае алгоритм можно оформить в виде функции.
Function Sp(a, b: myarray): Iongitn;
a, b — координаты векторов (одномерные массивы).
Var i : Integer; s : Longint; Begin s:=0; For i:=1 To n Do s:=s + a[i]*b[i]; Sp:= s; End;
На этом уроке мы познакомились с алгоритмами, в которых мы изменяли элементы одномерного массива, заполняли новые массивы по заданному правилу.
На следующем уроке рассмотрим алгоритм удаления элементов из одномерного массива.
До встречи на следующем уроке.
Источник: gospodaretsva.com
Методы доступа к элементам массивов
В языке СИ между указателями и массивами существует тесная связь. Например, когда объявляется массив в виде int array[25], то этим определяется не только выделение памяти для двадцати пяти элементов массива, но и для указателя с именем array, значение которого равно адресу первого по счету (нулевого) элемента массива, т.е. сам массив остается безымянным, а доступ к элементам массива осуществляется через указатель с именем array. С точки зрения синтаксиса языка указатель arrey является константой, значение которой можно использовать в выражениях, но изменить это значение нельзя.
Поскольку имя массива является указателем допустимо, например, такое присваивание:
int arrey[25]; int *ptr; ptr=array;
Здесь указатель ptr устанавливается на адрес первого элемента масcива, причем присваивание ptr=arrey можно записать в эквивалентной форме ptr= array[0] = 2; *(array+0) = 2; *ptr = 2; ptr[0] = 2; *(ptr+0) = 2;
присваивает начальному элементу массива значение 2, но быстрее всего выполнятся присваивания *array=2 и *ptr=2, так как в них не требуется выполнять операции сложения.
1.7.2. Указатели на многомерные массивы
Указатели на многомерные массивы в языке СИ — это массивы массивов, т.е. такие массивы, элементами которых являются массивы. При объявлении таких массивов в памяти компьютера создается несколько различных объектов.
Например при выполнении объявления двумерного массива int arr2[4][3] в памяти выделяется участок для хранения значения переменной arr, которая является указателем на массив из четырех указателей. Для этого массива из четырех указателей тоже выделяется память. Каждый из этих четырех указателей содержит адрес массива из трех элементов типа int, и, следовательно, в памяти компьютера выделяется четыре участка для хранения четырех массивов чисел типа int, каждый из которых состоит из трех элементов. Такое выделение памяти показано на схеме на рис.3.
Источник: codenet.ru
Одномерные массивы в Паскале
Работа с одномерными массивами на языке программирования Паскаль
Массив — самая распространенная структура хранения данных, присутствующая в любом языке программирования.
В Pascal используются одномерные и двумерные массивы. В школьной программе обычно их изучают в 9-10 классах.
Одномерный массив — это конечное количество однотипных элементов, объединенных общим именем. Каждому элементу присвоен свой порядковый номер. Обращение к элементам происходит по имени массива и индексу (порядковому номеру).
Одномерный числовой массив
Одномерные массивы называют линейными, так как элементы расположены друг за другом. Их можно представить в виде таблицы, в которой всего две строки. В первой перечислены индексы элементов, а во второй — значения элементов.
Имя массива формируется по тем же правилам, что и имя любой другой переменной в программе. Границы индексов задают при описании массива в квадратных скобках. Удобнее задавать начальный индекс равный единице. Конечный индекс определяется условием задачи и численно равен размеру массива — количеству элементов. Числовые массивы могут содержать целые и действительные числа.
Тип элементов указывается в описании. Смотрите рисунок выше.
Способы заполнения одномерных массивов
В наших примерах будем использовать одномерный массив целых чисел, состоящий из пяти элементов. Для этого выполним его описание в разделе переменных
Источник: infouch.ru