- •Лабораторная работа № 4.
- •Порядок выполнения работы
- •Выполнить практическую часть работы.
- •Оформить отчет о проделанной работе. К одной любой задаче разработать блок-схему.
- •Контрольные вопросы
- •Краткие теоретические сведения
- •Описание массивов
- •Ввод и вывод массива
- •Практическая часть Методы обработки одномерных массивов
- •Практическая часть работы Индивидуальные задания
Описание массивов
Каждый из индексов массива находится в некотором диапазоне (<нач. элемент>…<кон. элемент>). Причем конечный элемент больше либо равен начальному элементу. В качестве диапазона можно использовать: Integer, Char, Boolean.
Массив в языке Паскаль это сложный тип данных, поэтому чаще всего его описывают в разделе переменных.
Var <перем. массив>: array[<диапазон 1>..<диапазон N>] Of <тип переменной>;
Пример: список студентов группы
Var Spisok: array[1..40] String[20];
Получение элементов массива
Каждый элемент массива - это переменная, которой можно присваивать значения в операторах и функциях. Для того, чтобы указать элемент массива, необходимо записать все его индексы.
<перем. массив>[<индекс>,..,<индекс N>]
Пример:
Spisok[1]:=’Иванов’;
Итак, Массив - это именованный набор элементов с фиксированным количеством однотипных данных, где каждый элемент имеет уникальный номер (индекс), и этот номер определяет местоположение элемента в массиве.
Ввод и вывод массива
-
Одномерный массив:
Ручной ввод с клавиатуры
Вывод массива на экран в столбик
For i:=1 to n do
begin
write ( ‘ a[ ‘ , i , ’ ]= ’ );
readln ( a[ i ] ) ;
еnd ;
For i:=1 to n do
begin
writeln ( a[ i ]) ;
end.
Ввод массива с помощью датчика случайных чисел
Вывод массива на экран в строку
For i:=1 to n do
begin
a[ i ] :=random(35) ;
еnd ;
For i:=1 to n do
begin
write ( a[ i ]:3) ;
end.
Практическая часть Методы обработки одномерных массивов
Задача №1_Сумма элементов массива.
Пример программы, которая сначала вводит 30 реальных чисел, организовывает их хранение в массиве, определяет сумму элементов этого массива и выдаёт результат на экран.
PROGRAMM ex_1;
VAR
m: ARRAY[1..30] of real; {декларация массива}
i: integer; {параметр цикла FOR}
s: real; {сумма элементов}
BEGIN
FOR i:=1 TO 30 DO {заполнение массива}
Begin
Write('Введите элемент последовательности N ',i);
Readln(m[i]);
End;
s:=0; {обнуление счётчика суммы}
FOR i:=1 TO 30 DO s:=s+m[i]; {вычисление суммы}
Write('Сумма элементов последовательности равна ',s);
Readln; { пауза }
END.
Задача №2_Число положительных элементов массива
Пример программы, которая сначала вводит 30 реальных чисел, организовывает их хранение в массиве, определяет количество положительных элементов и выдаёт сообщение на экран.
PROGRAMM ex_2;
VAR
m: ARRAY[1..30] of real; {декларация массива}
i: integer; {параметр цикла FOR}
n: integer; {счётчик положительных эл-ов}
BEGIN
FOR i:=1 TO 30 DO {заполнение массива}
Begin
Write('Введите элемент последовательности N ',i);
Readln(m[i]);
End;
n:=0; {обнуление счётчика п. эл-ов}
FOR i:=1 TO 30 DO
if m[i]>=0 then n:=n+1; {вычисление количества п. эл-ов}
Write('Последовательность содержит ',n,' положительных эл-ов');
Readln; { пауза }
END.
Задача №3_Определение максимального элемента
Пример программы, которая сначала вводит 30 реальных чисел, затем организовывает их хранение в массиве, определяет значение и индекс (номер) максимального элемента этого массива и выдаёт сообщение на экран.
PROGRAMM ex_3;
VAR
m: ARRAY[1..30] of real; {декларация массива}
i: integer; {параметр цикла FOR}
max: real; {значение максимального элемента}
t: integer; {индекс (номер) макс. элемента}
BEGIN
FOR i:=1 TO 30 DO {заполнение массива}
Begin
Write('Введите элемент последовательности N ',i);
Readln(m[i]);
End;
max:=m[1]; {допустим, что 1-й элемент - максимален}
t:=1;
FOR i:=1 TO 30 DO
if m[i]>max then {проверка нашего утверждения}
begin
max:=m[i];
t:=i;
end;
Writeln('Максимальный элемент последовательности равен ',max);
Writeln('Номер максимального элемента ',t);
Readln; { пауза }
END.
Задача №4_ Поиск элемента в неупорядоченном массиве
Пример программы, которая сначала вводит 30 реальных чисел, организовывает их хранение в массиве, затем запрашивает так называемое "контрольное число". После этого проверяет, есть ли в массиве элемент,
который равен контрольному числу.
PROGRAMM ex_4;
VAR
m: ARRAY[1..30] of real; {декларация массива}
i: integer; {параметр цикла FOR}
p: real; {значение искомого элемента}
t: integer; {индекс (номер) иском. элемента}
BEGIN
FOR i:=1 TO 30 DO {заполнение массива}
Begin
Write('Введите элемент последовательности N ',i);
Readln(m[i]);
End;
Write('Введите контрольное число ');
Readln(p);
t:=0; {допустим, что в массиве нет такого элемента}
FOR i:=1 TO 30 DO
if m[i]=p then {проверка нашего утверждения}
begin
t:=i;
write('Эл. N ',i,' равен искомому');
end;
if t=0 then write('В массиве нет такого элемента');
Readln; { пауза } END.
Задача №5_ Дан массив А на 5 значений. Суммировать значения элементов массива до появления первого отрицательного элемента, т.е. значения A[I]<0. Полученную сумму вывести.
Const a : array[1..5] of real = (7, 5, 1, -2, 4);
Label m;
Var s : real; i : integer;
Begin s :=0;
for i:=1 to 5 do
begin if a[i]<0 then goto m; s :=s+a[i];
end;
m: writeln(‘s=’, s:12);
