120 likes | 230 Views
Организация данных в виде массива. Массив - это упорядоченный набор фиксированного количества некоторых значений, называемых элементами массива. Каждый массив имеет имя. К любому элементу массива можно обратиться по имени и индексу- порядковому номеру элемента.
E N D
Организация данных в виде массива
Массив - это упорядоченный набор фиксированного количества некоторых значений, называемых элементами массива. • Каждый массив имеет имя. К любому элементу массива можно обратиться по имени ииндексу- порядковому номеру элемента. • Массивы могут быть одномерные ( линейные), двумерные – (прямоугольные или матрицы), многомерные
Формат описания одномерного массива • Имя массива: 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 DoBeginWriteln('ввести ',i,'-й элемент');Readln(M[i]);End; {вывод в столбик}For i:=1 to n DoBeginWriteln(‘M[‘,i,‘]=‘, M[i]);End; End.
Заполнение по формуле и вывод User Crt; Const n=10; Var M: array[1..n] of real; Begin {Заполнение по формуле и вывод}For i:=1 to n DoBegin 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 DoBegin 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 DoBeginWriteln('A(',i,')='); Read(A[i]); End;{подсчет количества и суммы элементов, удовлетворяющих условию} col:=0;Sum:=0;Writeln('ввести значени z=');Readln(z); For i:=1 to n Do If a[i]<z Then Begin col:=col+1;summa:=sum+a[i];End;End.
Задача №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<=m<=n • Const n=40;Var j,m:integer; a: array[1..n] of integer;Begin Writeln('номер индекса для вставки = ');Readln(m); For i:=n+1 Downto m+1 Do Begin A[i]:=a[i-1]; A[m]:=10; End;End.