Организация данных в виде массива
Массив - это упорядоченный набор фиксированного количества некоторых значений, называемых элементами массива. Каждый массив имеет имя. К любому элементу массива можно обратиться по имени и индексу- порядковому номеру элемента. Массивы могут быть одномерные ( линейные), двумерные – (прямоугольные или матрицы), многомерные
Формат описания одномерного массива Имя массива: ARRAY[границы] OF тип данных Массив описывается в разделе VAR Пример1 Var М: array[1..10] of integer; Описан массив М целых чисел. Размер массива 10 элементов. Т. е. в ОП зарезервировано место под 10 значений. Каждое значение будет хранится в отдельной переменной (ячейке), обращение к которой происходит по имени массива и порядковому номеру (индексу) Например, М[7] – это 7-й элемент массива М Пример2 Можно количество элементов массива задать в разделе CONST, тогда описание будет выглядеть так: CONST n=12; VAR М: array[1..n] of integer; Пример3 CONST n=12; VAR st: array[1..n] of string; описание массива st символьных (не числовых) данных. Массив может содержать не более 12 элементов
Ввод/вывод значений элементов одномерного массива ввод с клавиатуры Помните Почти все действия с массивом выполняются в цикле! User Crt; Const n=10; Var M: array[1..n] of real; Begin {ввод с клавиатуры} For i:=1 to n Do Begin Writeln('ввести ',i,'-й элемент');Readln(M[i]); End; {вывод в столбик} For i:=1 to n Do Begin Writeln(M[, i, ]=, M[i]); End; End.
Заполнение по формуле и вывод User Crt; Const n=10; Var M: array[1..n] of real; Begin {Заполнение по формуле и вывод} For i:=1 to n Do Begin M[i]:=(i*i+1)/sin(i); Writeln('A(',i,')=',M[i]); End; End.
Заполнение массива случайными числами Const n=10; Var a: array[1..n] of Real; i:integer; Begin {Заполнение случайными числами и вывод в строку} Randomize; // For i:=1 to n Do Begin A[i]:=random(4)+2; Write('A(',i,')=',a[i]:4); End; End;
Типовые задачи на одномерные массивы Задача1 Нахождение количества и суммы. Дан массив А из 10 элементов, которые вводятся с клавиатуры. Подсчитать, сколько элементов массива имеют значение, меньшие заданного значения Z и сумму этих элементов.
Задача 1 Program zadacha1; Const n=10; Var a: array[1..n] of Real; col, z : integer; sum: real; Begin {Заполнение c клавиатуры} For i:=1 to n Do Begin Writeln('A(',i,')='); Read(A[i]); End; {подсчет количества и суммы элементов, удовлетворяющих условию} col:=0; Sum:=0; Writeln('ввести значени z=');Readln(z); For i:=1 to n Do If a[i]
Задача 2 Задача2 Поменять местами значения элементов. Написать только процедуру обработки. Дан массив A[1..40]. Поменять местами 1-й элемент с последним, 2-й с предпоследним и т. д. …….. Var p,i:integer; a: array[1..40] of Real; Begin /ввод и вывод исходного массива … /ОБРАБОТКА For i:=1 to n Do Begin P:=a[i]; A[i]:=a[40-i+1]; A[40-i+1]:=p; End; /вывод полученных результатов
Задача 3 Задача3 Формирование нового массива из элементов старого Дан массив X[1..20].Сформировать новый массив Y, состоящий из 10 первых положительных элементов массива Х ………………. Const n=40; Var k,i:integer; x,y: array[1..n] of integer; Begin /ввод и вывод исходного массива… /обработка K:=0; For i:=1 to n Do Begin If x[i]>0 Then Begin k:=k+1;y[k]:=x[i]; End; End; /вывод полученных результатов
Задача 4 Задача4 Cортировка массива по возрастанию Написать только процедуру обработки. Дан массив А[1..N]. Const n=40; Var j, i, w: integer; a: array[1..n] of integer; Begin w:=0; For i:=1 to n-1 Do Begin For j:=i+1 to n Do If a[i]>a[j] Then Begin w:=a[i]; a[i]:=a[j]; a[j]:=w; End; End; End.
Задача 5 Задача5 Вставка элементов в заданный массив. Написать только процедуру обработки. Дан массив А[1..N]. Вставить число 10 в позицию M данного массив, причем 1