Title: 3
Author: Alexandre Katalov
Last saved by: nout2
Company: Elcom Ltd

ЛАБОРАТОРНАЯ РАБОТА № 9.
Типовые алгоритмы обработки одномерных массивов
Цель работы: Приобрести навыки использования операторов ввода-вывода при обработке одномерных массивов.
Литература : В.П. Попов TURBO PASСAL .для школьников. Версия 7.0.
Краткие теоретические сведения:
При подготовке к лабораторной работе следует повторить следующие вопросы: описание массивов, размещение массивов в памяти машины процедуры ввода - вывода массивов,  алгоритм нахождения суммы, наибольшего, наименьшего значения элементов массива. В соответствии с заданием на лабораторную работу разработать схему алгоритма и составить программу на языке Паскаль. В программе предусмотреть вывод результатов в текстовой форме.
Массивы относятся к структурным типам. Структурные типы, в отличие от простых, позволяют одним объектом задавать множество значений.   Массив состоит из фиксированного числа элементов одного и того же типа. Для определения, или описания, массива необходимо задать тип его элементов, а также их количество и способы нумерации. 
Описание массива имеет следующий вид :
var <имя массива > :array [ n1..n2 ] of  < тип элементов > ;
где  n1- начальный индекс массива , n2- конечный индекс. Индексы  при описании массива задаются константами , обычно целого  или символьного типа  ( вещественный тип для индексов массива недопустим).Тип элементов массива может быть любой. 
Примеры описания массивов :
var a :array [0..10] of integer ; {массив из 11элементов целого типа }    
    var b : [-5..9] of real ; { массив из 15 элементов вещест. типа }
При обращении к элементам массива в качестве индексов можно использовать константы, переменные и выражения. Например  :
a[0] :=10
b[i*2] :=3.1415926535
Необходимо следить за тем, чтобы индекс массива не выходил за диапазон, заданный при описании массива. Элементы массива можно использовать везде, где допустимо использование простых переменных того же типа..
Порядок выполнения работы:
1.	Получить допуск к работе у преподавателя.
2.	Ввести текст программы.
3.	Провести отладку программы.
4.	Выполнить программу, провести анализ результатов и, убедившись в правильности решения,  предъявить их преподавателю.
Контрольные вопросы:
1.Понятие одномерного массива и способы его описания.
2.Организация ввода одномерных массивов на языке Паскаль.
3.Вывод массивов на языке Паскаль.
4.Алгоритм нахождения суммы и произведение элементов одномерного массива.
5.Алгоритм нахождения наибольшего значения элемента одномерного массива.
6. Алгоритм нахождения наименьшего значения элемента одномерного массива.
Задание к лабораторной работе: 
Записать текст программы , провести отладку, перечислить все допущенные в программах ошибки. Устранить их.
 1.	Пример программы для ввода с клавиатуры массива из 10 элементов и определения среднего арифметического  значения  и элемента массива, наиболее близкого к среднему арифметическому .
var    m: array[1..n] of real ;
sum, const n = 10
sr,delta: real;
i, num:integer;
begin
writeld (‘ введите элементы массива ‘) ;
for i : =1 to n do
realdln (m[i]) ;
{вычислите суммы элементов и среднего арифметического }
sum :=0
for i : = 1to n do
     sun : =sun + m [i]
sr : =sun/n
{ вычислите номера элемента ,ближайшего к среднему}
num : =1
delta :=abc(sr-m[1]
for i :=2 to n do
if delta <abc (sr-m[i] )
Then begin      
Delta  :=abc (sr-m[i] )
Num :=i
End
Writeln (‘среднее=’,sr,’ элемент ,ближайший к среднему =’, m[num])
End
2.	Пример программы для заполнения массива из 20 элементов целыми случайными числами в диапазоне от 0 до 99. и сортировки элементов массива по возрастанию. Для получения случайных чисел  используется функция random (n) и процедура randomize ,где n задает диапазон случайных чисел ( случайные числа генерируются в диапазоне от 0 до n-1). Оформить вывод сортированного массива.
Const n= 20
Var m :array [1..n] of integer ; 
I,j temp for i :=1 to n do 
:integer ;
Begin 
Rendomize ;{инициализация генератора случайных чисел}
m[i] :=random (100) ;{заполнение массива случай. числами  в диапазоне от 0 до 99}
{сортировка элементов массива }
for i : = 1to n do
for j:=i+ 1to n do 
if m[i]>m[j] then begin 
temp :=m[i];m[i] :=m[j];m[j]:=temp
end
Самостоятельная работа по вариантам:
1.	В массив А[N] занесены натуральные числа. Найти сумму тех элементов, которые кратны данному К.
2.	В целочисленной последовательности есть нулевые элементы. Создать массив из номеров  этих элементов.
3.	Дана последовательность целых чисел a1,a2,a3,…,an..Выяснить какое число встречается раньше – положительное или отрицательное.
4.	Задана последовательность N целых чисел. Вычислить сумму элементов массива, порядковые номера которых совпадают со значением этого элемента.
5.	Заполнить массив из N элементов с начальным значением заданным a[0]#0, по принципу A[i]=A[I div 2 ]+A[I-1].
6.	При поступлении  в вуз абитуриенты, получившие двойку на первом экзамене, ко второму не допускаются. В массиве A[n] записаны оценки экзаменующихся, полученные на первом экзамене. Подсчитать, сколько человек не допущено ко второму экзамену.