Организация данных в виде массива

advertisement
Организация данных в виде
массива
• Массив - это упорядоченный набор
фиксированного количества некоторых
значений, называемых элементами массива.
• Каждый массив имеет имя. К любому элементу
массива можно обратиться по имени и
индексу- порядковому номеру элемента.
• Массивы могут быть одномерные ( линейные),
двумерные – (прямоугольные или матрицы),
многомерные
Формат описания одномерного
массива
• Имя массива: 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]<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.
Download