1 / 20

Одномерные массивы

Одномерные массивы. А [1]. А [2]. А [3]. А [4]. А [5]. А [6]. …. А [n]. Определения. Массив – это конечный, последовательный набор элементов одного типа, связанных общим именем Простейшая форма – одномерный массив (линейная таблица, вектор).

kamin
Download Presentation

Одномерные массивы

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Одномерные массивы

  2. А[1] А[2] А[3] А[4] А[5] А[6] … А[n] Определения • Массив – это конечный, последовательный набор элементов одного типа, связанных общим именем • Простейшая форма – одномерный массив(линейная таблица, вектор) • Он имеет индивидуальное имя, а для обозначения отдельной компоненты к имени массива добавляется индекс, который и выделяет нужную компоненту • Компоненты массива называются переменными с индексами • Наименьший индекс называется нижней границей, наибольший индекс – верхней границей, а число элементов – размером массива • Количество индексов называют размерностью массива

  3. Описание массива Описываем массив в блоке описаний: VAR <имя_массива>:array[n..k] of <тип_элементов>; Типизированное описание массива: TYPE <имя_типа>=array[n..k] of <тип_элементов>; VAR <имя_массива>: <имя_типа>;

  4. Размер массива фиксируется при описании и в процессе выполнения программы не меняется. • Индексы можно вычислять. • Наиболее часто в качестве типа индекса используется ограниченный целый тип или перечислимый тип (это целые числа, символы, интервалы, перечисления ), т.е. все простые типы, кроме действительного. • При необходимости мы можем «нумеровать» элементы массива буквами алфавита.

  5. Примеры • Обращение к элементу массива: • Var a: array[1..3] of integer; a[1]Var b: array[‘a’..’c’] of integer; b[‘a’] Var c: array[red,green,blue] of integer; c[red] • Var d: array[byte] of real; • Однако, размер массива в байтах не может превышать 65520!

  6. Количество элементов массива, их упорядоченность и тип задают явно до начала выполнения программы. Поэтому, если границы массива точно неизвестны, то их выбирают «с запасом» так, чтобы его размер был не меньше значения n, которое будет введено.

  7. Пусть описан следующий одномерный массив: … Const M=100; TYPE ОMAS=array[1..M] of integer; VARa, b, с: ОMAS; n,i:byte; … WriteLn(‘Введите размер массива’); ReadLn(n);

  8. Основные характеристики одномерного массива • имя массива; • тип компонентов массива; • размерность, равная количеству индексных позиций (измерений) массива; • порядок нумерации компонентов в последовательности (значения верхней и нижней границ для каждого индекса); • количество компонентов – длина массива и размер массива. Имя массива образуется по общему правилу образования имен (идентификаторов). Однако оно не должно совпадать с именем ни одной простой переменной, используемой в этом же алгоритме.

  9. Заполнение одномерного массива 1 способ: поэлементное присвоение значений Пусть задан массив, содержащий оценки учащегося по предметам физико-математического цикла: Var a: array[1..5] of integer; … Begin … a[1]:=4; a[2]:=5; a[3]:=4; a[4]:=3; a[5]:=4; …

  10. 2 способ:заполнение случайным образом Пусть одномерный массив из 5 целых чисел нужно заполнить целыми числами в диапазоне от -20 до 50. Var a: array[1..5] of integer; i: byte; … Begin … Randomize; For i:=1 To 5 Do a[i]:=random(71) - 20; …

  11. 3 способ:заполнениес клавиатуры Var a: array[1..5] of integer; i: byte; … Begin WriteLn(‘Введите элементы одномерного массива:’) For i:=1 To 5 Do ReadLn(a[i]);

  12. 4 способ:заполнениепо формуле (закону) Пусть одномерный массив заполнен элементами арифметической прогрессии, первый элемент которой равен 2, а каждый последующий увеличивается на 3. Var a: array[1..5] of integer; i: byte; … Begin … a[1]:=2 For i:=2To 5 Do a[i]:=a[i-1]+3; …

  13. Вывод элементов одномерного массива на экран монитора • В столбик: • WriteLn (‘Исходный массив:’); • For i:=1 To 5 Do • WriteLn(a[i]); 2. В строчку: Пусть массив заполнен целыми числами: WriteLn (‘Исходный массив:’); For i:=1 To 5 Do Write(a[i]:4);WriteLn; Пусть массив заполнен вещественными числами: WriteLn (‘Исходный массив:’); For i:=1 To 5 Do Write(a[i]:8:2); WriteLn;

  14. Задача 1. В одномерном массиве, заполненном случайным образом целыми числами в диапазоне от -30 до 70, найти количество отрицательных элементов и сумму положительных элементов. Const M=100; TYPE ОMAS=array[1..M] of integer; VARa: ОMAS; n, i, k: byte; s: integer; BEGIN WriteLn(‘Введите размер массива’); ReadLn(n); WriteLn(‘Исходный массив:’); For i:=1 To n Do Begin a[i]:=random(100)-30; Write(a[i]:3); End; WriteLn; {Поиск количества отрицательных и суммы положительных элементов} k:=0; s:=0; For i:=1 To n Do Begin If a[i]<0 Then inc(k); If a[i]>0 Then inc(s,a[i]) End; WriteLn(‘Кол-во отрицательных элементов:’,k:3); WriteLn(‘Сумма положительных элементов:’,s:5);END.

  15. Задача . Найти количество максимальных элементов в одномерном массиве. • Суть решения. При переборе элементов различаем две ситуации: • если очередной элемент равен значению max, то надо увеличить счётчик максимальных значений на 1 (kmax); • если найден элемент с большим значением, то счётчик снова устанавливается в 1, а найденное значение запоминается в качестве условно-максимального (Значение 1 для начального счётчика очевидно – в любой последовательности есть хотя бы один элемент с наибольшим значением)

  16. Const M=100; TYPE ОMAS=array[1..M] of integer; VARa: ОMAS; n, i, max, kmax: byte; BEGIN WriteLn(‘Введите размер массива’); ReadLn(n); WriteLn(‘Исходный массив:’); For i:=1 To n Do Begin a[i]:=random(10); Write(a[i]:3); End; WriteLn; kmax:=1; max:= a[1]; For i:=2 To n Do If a[i]=max Then kmax:= kmax + 1 else If a[i]>max Then begin max:= a[i]; kmax:=1 end; WriteLn(‘Количество максимальных элементов:’); WriteLn(kmax); END.

  17. Процедура формирования значений элементов массива PROCEDURE Init1 (t,v,w:Integer; Var x: ОMAS); Var i:Integer; BEGIN Randomize; For i:=1 To t Do x[i]:=v + RANDOM(w); END;

  18. Использование процедур для организации работы с одномерными массивами Процедура вывода t первых элементов массива X PROCEDURE Print (t:Integer; Var x: ОMAS); Var i:Integer; BEGIN For i:=1 To t Do Write(x[i]:5); WriteLn; END;

  19. Даны два целочисленных массива, состоящих из одинакового числа элементов. Получить третий массив той же размерности, каждый элемент которого равен сумме соответствующих элементов данных массивов. PROCEDURE Form (t:Integer; X, Y: ОMAS; Var Z: ОMAS); Var i:Integer; BEGIN For i:=1 To t Do Z[i]:=X[i] + Y[i]; END;

  20. Const M=100; TYPE ОMAS=array[1..M] of integer; VARa, b, с: ОMAS; n,i:byte; PROCEDURE Init (t,v,w:Integer; Var x: ОMAS); {Процедура формирования массива} Var i:Integer; BEGIN Randomize; For i:=1 To t Do x[i]:=v + RANDOM(w); END; PROCEDUREPrint (t:Integer; Var x: ОMAS); {Процедура вывода элементов массива} Var i:Integer; BEGIN For i:=1 To t Do Write(x[i]:5); WriteLn; END; BEGIN {Основная программа} WriteLn(‘Введите размер массива’); ReadLn(n); Init(n,-9999,19999,a);Print(n,a); … Print(n,a); END.

More Related