Цель работы: приобретение навыков работы с одномерными массивами
Теоретическая часть
Понятие массива
Массив, в отличие от простой переменной, представляет собой не одно значение, а множество значений, объединенных одним именем. В языке Turbo Pascal все значения из этого множества должны иметь один и тот же тип.
Каждое из значений массива называется элементом массива.
Доступ к элементам массива производится посредством указания имени массива и номера элемента массива, заключенного в квадратные скобки.
Номер элемента массива называется индексом элемента массива.
Использование элемента массива не отличается от использования простой переменной, имеющей тот же тип, что и элемент массива.
В Turbo Pascal’е массив объявляется при помощи ключевого слова array, после которого в квадратных скобках указываются границы индексов – верхняя, а после двух точек нижняя. После квадратных скобок после ключевого слова of указывается тип элементов массива.
Пример определения массивов:
Var
A: Array [1..10] of integer;//массив A, состоящий из 10 элементов
целого типа с индексами от 1 до 10
B: Array [5..8] of real; //массив B, состоящий из 4 элементов
вещественного типа с индексами от 5 до 8
Прежде, чем работать с массивом, его нужно описать. Описание массива в программе осуществляется двумя способами:
Вариант описания массива с использованием раздела TYPE
TYPE <имя типа>=array[тип индекса] of <тип компонент>;
VAR <имя массива1, имя массива2, …, имя массива n>:<имя типа>;
Пример:
TYPE MAS=array[1..20] of real;
VAR A,B,C: MAS;
Вариант описания массива в разделе VAR
VAR
<имя массива1,имя массива2,…,имя массиваn>: array [тип индекса] of <тип компонент>;
Пример: VAR A,B,C: array [1..20] of real;
Решение типового примера
Пример 12.1. Дан массив вещественных чисел х1,х2,…,хn. Найти максимальный элемент массива.
max:=x[i]
Рисунок 11
Программа
Program Project1;
Var max:real;
x: array[ 1..40] of real;
i,n:integer;
Begin
//ввод размера массива
Write('n=');
Readln(n);
//ввод значений элементов массива
for i:=1 to n do
read(x[i]);
max:=x[1];
//нахождение максимального
//элемента массива
for i:=2 to n do
if x[i]>max then max:=x[i];
writeln('max=',max:6:2);
readln;
end.
Пример 11.2. Элементам массива b присвоить значения элементов массива a.
program Project2;
const m=20;
type mas=array[1..m] of real; // описание типа одномерного массива
var a,b:mas; // описание переменных одномерного массива,
// массивы a и b – идентичные массивы
i:integer;
begin
for i:=1 to m do
a[i]:=0; // инициализация массива а
b:=a; // присваивание значений массива а массиву b
for i:=1 to m do
write(b[i]:3:1,' '); // вывод значений массива b
readln;
end.
Пример 12.3. Найти сумму элементов одномерного массива.
program Project3;
const m=10;
type m1=array[1..m] of real;
var a:m1; i:integer; s:real;
begin
s:=0;
for i:=1 to m do
begin
write('a[',i,']=');
readln(a[i]); // ввод значений массива a
s:=s+a[i];
end;
write('s=',s:3:1); // вывод результата
readln;
end.
Пример 12.4. Найти сумму и количество положительных и отрицательных элементов одномерного массива а.
program Project4;
const m=10;
type m1=array[1..m] of real;
var a:m1; i,kp,ko:integer; sp,so:real;
begin
sp:=0; kp:=0; so:=0; ko:=0;
for i:=1 to m do
begin
write('a[',i,']=');
readln(a[i]); // ввод значений массива a
if a[i]>0 then begin sp:=sp+a[i]; kp:=kp+1; end;
if a[i]<0 then begin so:=so+a[i]; ko:=ko+1; end;
end;
writeln('sp=',sp:3:1,' kp=',kp); // вывод суммы и количества положительных
//элементов
write('so=',so:3:1,' ko=',ko); // вывод суммы и количества отрицательных
// элементов
readln;
end.
Пример 12.5. Найти значение максимального элемента одномерного массива а.
program Project5;
const m=10;
type m1=array[1..m] of real;
var a:m1; i,kp,ko:integer; max:real;
begin
for i:=1 to m do
begin
write('a[',i,']=');
readln(a[i]); // ввод значений массива a
end;
max:=a[1];
for i:=1 to m do
if a[i]>max then max:=a[i];
writeln('max=',max:3:1); // вывод значения максимального элемента одномерного массива