Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование.pdf
Скачиваний:
37
Добавлен:
07.06.2015
Размер:
672.16 Кб
Скачать

5. МАССИВЫ

Язык программирования Паскаль предлагает некоторые методы определения типов данных: скалярных (простых) и структурированных. Скалярные типы мы уже рассмотрели: целые, вещественные, символьные, булевы.

Структурированные типы базируются на скалярных типах и могут содержать их различные комбинации. Возможно использование следующих структур, образованных из простых типов: массив, запись, множество, строка и последовательность (файл).

При решении научно-технических задач возникает совокупность значений, организованных в форме вектором и матриц.

Аналогом в программировании на языке паскаль является массив. Все элементы (компоненты) массива принадлежат одному типу. Тип компонент массива может быть любым, число элементов задается при его описании и в дальнейшем не изменяется.

К любому элементу массива можно обратиться, задав индекс, который однозначно определяет позицию элемента в массиве. Тип индекса может быть одним из упорядоченных типов, т.е. любым скалярным типом, кроме real.

5.1. Одномерные масивы

Одномерный массив – это фиксированное количество элементов одного и того же типа, объединённых одним именем, где каждый элемент имеет свой номер. Например, введём 30 целых чисел от 25 до 54 и объединим их одним именем А.

N A

1 25

2 26

2953

3054

45

Описываем массив в разделе описания типов: type MyArray=array[1..30] of integer;

Здесь MyArray – имя нового типа и его описание, array – служебное слово (на англ. языке означает «массив»), [1..30] – номера первого и последнего элемента, integer – тип всех элементов массива.

В общем виде задание массива выглядит следующим образом: array [n1..n2] of <тип элементов>, каждый элемент имеет свой номер, и к каждому можно обратиться непосредственно. Чтобы обратиться к элементу массива нужно записать A[i]. Например, для обращения к первому элементу необходимо записать A[1].

При решении задач с массивами могут возникать несколько видов задач. Основные типы задач: нахождение суммы элементов, нахождение комбинации элементов с заданным свойством, работа с несколькими массивами (вычисление произведения векторов).

Рассмотрим программу нахождения суммы элементов массива. Опишем две процедуры (формирование и вывод) и функцию, нахождения суммы элементов, которые будем использовать в основной

программе.

Значения элементов массива будем вводить с клавиатуры.

Program Example1;

сonst n=30; {количество элементов массива} type MyArray= array [1..n] of integer;

var A : MyArray;

S : Integer; {значение суммы} Procedure Init1(var m : MyArray); var i : integer;

begin

writeln(‘Введите ‘,n,’ чисел’);

for i:=1 to n do readln(m[i]); {ввод массива с клавиатуры}

end;

Procedure Print(m : MyArray); var i: integer;

begin

46

for i:=1 to n do write(m[i]:3); {вывод массива} writeln;

end;

Function Sum(m: MyArray): integer; var i, sum : integer;

begin

Sum:=0; {начальное значение суммы}

for i:=1 to n do sum:=sum+m[i]; {к уже найденной сумме (i-1)

элемента прибавляем i-й элемент}

end; begin

Init1(A); {вызов процедуры формирования} Print(A); {вывод массива на экран} S:=Sum(A); {находим сумму}

writeln(‘Их сумма равна ’,S); readln;

end.

Рассмотрим примеры программ, иллюстрирующие работу с элементами одномерного массива.

1. Нахождение суммы элементов, кратных заданному числу.

Function Sum(m : MyArray) : integer; var i,s,k: integer;

begin

writeln(‘Введите число’); read(k);

s:=0; {начальное значение суммы} for i:=1 to n do

if (m[i] mod k =0) then S:=S+m[i]; {если элемент кратен k, то прибавляем его к сумме}

Sum:=S;

end;

47

2. Поиск номера четных элементов.

procedure Solve (m : Myarray); var i: integer;

begin

for i:=1 to n do

if (i mod 2 =0) then write(i:5);

end;

3.Поиск количество положительных и отрицательных элементов

взаданном массиве.

procedure Quantity(m : MyArray, var k1,k2 : integer); var I : integer;

begin K1:=0; K2:=0;

for i:=1 to n do

if m[i]>0 then inc(k1) else

if m[i]<0 then inc(k2);

end;

4. Проверка наличия отрицательных элементов в массиве.

function Control(m: MyArray): boolean; var i: integer;

begin i:=1;

while (i<=n) and (m[i]>0) do inc(i); Control:= (i<=n);

end;

5. Изменение значения некоторых элементов.

Пример. Заменить отрицательные элементы на противоположные по знаку.

48