Организация данных в виде массива
Post on 03-Jan-2016
56 Views
Preview:
DESCRIPTION
TRANSCRIPT
Организация данных в виде массива
• Массив - это упорядоченный набор фиксированного количества некоторых значений, называемых элементами массива.
• Каждый массив имеет имя. К любому элементу массива можно обратиться по имени ииндексу- порядковому номеру элемента.
• Массивы могут быть одномерные ( линейные), двумерные – (прямоугольные или матрицы), многомерные
Формат описания одномерного массива
• Имя массива: 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 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 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.
top related