Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа_7_(одномерные массивы).doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.16 Mб
Скачать

Лабораторная работа №7

Структурированный тип данных. Одномерные массивы.

Цель работы: овладеть практическими навыками работы с массивами, вводом, выводом их значений, закрепить навыки по организации программ циклической структуры.

Теоретические сведения Понятие массива в языке программирования PascalАвс

Массивами пользуются тогда, когда необходимо обработать большой набор однотипных данных.

Массив в языке Паскаль – это набор фиксированного числа некоторых значений, которые называются компонентами (элементами). Все компоненты должны быть одного типа, который называют типом элементов или базовым типом. Каждый элемент массива имеет свой порядковый номер.

Каждому конкретному массиву пользователь в своей программе дает имя, которое называют полной переменной. Каждый элемент массива обозначается полной переменной и в квадратных скобках указывается номер (индекс) этого элемента в массиве. Например, a[2]- элемент массива а, который стоит на втором месте; b[i+k-1] – элемент массива b, который стоит на i+k-1 месте.

Количество индексов каждого элемента массива определяет размерность массива. Если каждый элемент массива имеет только один индекс, то такие массивы называются одномерными. Если каждый элемент массива имеет два индекса, то такие массивы называют двумерными. Количество элементов в массиве определяет его размер.

Данные типа массив относятся к классу структурных данных.

Рассмотрим одномерные массивы, т.е. каждый элемент имеет только один номер (индекс) – это порядковый номер элемента в ряду.

Объявление одномерного массива в программе

Одномерный массив объявляется в программе двумя способами:

1 способ:

Var имя_массива : Array [n..m] Of тип_элементов;

2 способ:

Type имя_типа=Array [n..m] Of тип_элементов;

Var имя_массива : имя_ типа;

Слова Type (тип), Array (ряд), Of (из) – служебные слова. Имя типа и имя массива дает пользователь. В квадратных скобках указывается интервал изменения индексов элементов массива, поэтому n, m – должны быть обязательно константами порядкового типа.

Ввод элементов одномерного массива с клавиатуры и вывод на экран

Задача 1. С клавиатуры вводятся n<=50 вещественных чисел. Найти сумму отрицательных элементов данного массива.

Program a1;

Type mas = Array[1..50] of Real;

Var a:mas;

s:Real;

i,n:Integer;

Begin

Writeln('Ввести размер массива, т.е.количество элементов массива');

Readln(n);

{Продолжение программы после блок-схемы}

{Ввод самих элементов массива с клавиатуры}

For i:=1 to n do

Begin

Writeln('Ввести a[',i,']');

Readln(a[i]);

End;

{Вывод элементов массива на экран: все элементы в одну строку}

Writeln('Массив a:');

For i:=1 to n do Write(a[i]:6:2);

Writeln;

{Вычисление суммы}

s:=0;

For i:=1 to n do if a[i]<0 Then s:=s+a[i];

{вывод ответа}

Writeln('Сумма=',s:8:2);

End.

Задание элементов одномерного массива с помощью функции случайных чисел

В языке PascalABC можно получать числа с помощью функции случайных чисел Random. Применяя функцию в разных видах можно получить число из заданного интервала. В таблице приведены некоторые варианты записи функции случайных чисел.

Таблица.

Тип

Формат

Проме-жуток

Выражение, содержащее функцию Random

Целое

Положительное

[a, b)

a+ Random(b-a)

Отрицательное

[a, b)

-(a+ Random(b-a))

Целое со знаком

[a, b)

(a+ Random(b-a))-(a+ Random(b-a))

Дей- ствитель-ное

Положительное

[0, 1)

Random

Положительное

[0, b)

Random+Random(b)

Положительное

[k, k+1)

k + Random

Положительное

[a, b)

a+(b-a)*Random

Действительное со знаком

[a, b)

(a+ (b-a)*Random)–(a+(b-a)*Random)

Изучая варианты, представленные в таблице, можно сделать вывод: в общем случае существуют только два выражения a+Random(b-a) и a+(b-a)*Random для получения случайных последовательностей целых и действительных чисел в диапазоне [a, b). Варьируя a и b, можно получить все желаемые диапазоны.

Элементы массива можно задавать с помощью функции случайных чисел.

Задача 2.Одномерный массив, который содержит не более 20 вещественных чисел, задать с помощью функции случайных чисел. Найти номер последнего элемента, кратного данному числу х. Если таких элементов нет, вывести об этом сообщение.

Решение. Будем по порядку просматривать все элементы массива. Как только найдется элемент, который делится на х без остатка, необходимо зафиксировать номер этого элемента в массиве. Для этого введем переменную m, в которой сохраним номер найденного элемента.

Чтобы зафиксировать нашелся элемент кратный х или нет в массиве, введем переменную k. Этой переменной перед просмотром всех элементов массива дадим значение, например, True. Когда найдется нужный элемент, то значение переменной k поменяем на False. Если же в массиве нужных элементов не найдется, то переменная k не изменит свое значение и останется равной True. Такие переменные в программе называются флажками, дополнительными переменными, флюгерами.

Program a2;

Type mas=Array[1..20] of Integer;

Var a:mas; i,n,m,x:Integer; k:Boolean;

Begin

Writeln(‘Ввести число х’);

Readln(x);

Writeln('Ввести размер массива');

Readln(n);

{Ввод элементов массива с помощью функции случайных чисел}

For i:=1 to n do a[i]:=Random(100);

{Вывод элементов массива на экран}

Writeln('Массив a:');

For i:=1 to n do Write(a[i]:8:2);

Writeln;

{Решение задачи}

k:=True;

m:=0;

For i := 1 to n do

If a[i] mod x=0 Then begin m:=i; k:= False; end;

{Вывод ответа на экран}

If k=True

Then Writeln('элементов кратных’, х,’ нет')

Else Writeln('Последний элемент кратный ‘,x,’=',a[m]:8:2,' его номер=',m);

End.

Задача 3. Одномерный массив х, который содержит не более 40 вещественных чисел, задать с помощью функции случайных чисел. Для каждого элемента массива х вычислить значение y=(x2+5x-6)/(x2+4) и составить из значений у другой массив.

Program a3;

Type mas=Array[1..40] of Real;

Var x,y:mas; i,n,m:Integer;

Begin

Writeln('Ввести размер массива');

Readln(n);

{Ввод элементов массива с помощью функции случайных чисел}

For i:=1 to n do x[i]:=100*(Random-Random);

{Вывод элементов массива х на экран}

Writeln('Массив x:');

For i:=1 to n do Write(x[i]:8:2);

Writeln;

{Составление массива у и одновременно вывод этого массива на экран}

Writeln('Массив y:');}

For i:=1 to n do

begin

y[i]:=(x[i]*x[i]+5*x[i]-6)/(x[i]*x[i]+4);

Write(y[i]:8:2);

End;

End.