Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Общие сведения. Массивы - это конечная совокупность величин, обозначенных одним и тем же идентификатором




Массивы - это конечная совокупность величин, обозначенных одним и тем же идентификатором. Для обозначения элементов массивов используются переменные с индексами. Язык Паскаль дает возможность работать с одно, двухмерными и n-мерными массивами, в частности, с векторами и матрицами. Элементы одномер­ных массивов снабжаются одним индексом, определяющимм порядковый номер элемента в массиве, например А [5]. Элементы двумерных массивов (например SIGMA [3,4]) снабжаются двумя индексами, первый из которых определяет номер строки, а второй - номер столбца, на их пересечении расположен в матрице соответствующий элемент.

Перед тем, как работать с массивами, элементами массивов, массивы как и другие типы данных должны быть описаны в разделе описаний программы. Име­ется ряд форм описаний массивов. Первая общая форма состоит из 2-я этапов.

Рис. 5.1 Рис. 5.2 Рис. 5.3

Сначала в разделе описания типов TYPE указывается тип массива, т.е. TYPE имя типа = ARRAY [Т1] ОF [T2] где ARRAY - OF - служебное словосочетание;

Т1 - тип индекса, в качестве которого может 5ыть любой простой тип, кроме стандартных типов REAL иINTEGER;

Т2 – тип элементов массива, допустимый на языке Паскаль. Затем в разделе описания переменных VAR перечисляются массивы, относящиеся к указанному типу, т е. VAR имя массива / список имен массивов: имя типа,

Например

TYPE MAS = ARRAY [1..50] of REAL;

VAR А, В, С: MAS;

Здесь тип индекса имеет ограниченный тип от 1 до 50, А. В. С – имена массивов, злонсяты которы» имеют базовый тип REAL.

При второй форме описания массивов можно обойтись без определения типа. Тогда в разделе описания переменных VAR указывается вся необходимая инфор­мация о типах индексов и компонентов;

VAR имя.массива / имена массивов: ARRAY [Tl] OF [Т2] т.е. в нашем примере:

VAR А,В,С: ARRAY [1..50] OF REAL;

Наиболее часто в качестве типа индекса используется ограниченный целый тип, при этом нумерация компонент начинается с 1, но это не обязательно. Множество значений перечислимого типа также образует ограниченное перенумерованное множество. Следовательно, перечислимый тип также может быть использован в качестве типа индексов. Например тип BOOLEAN является стандартным перечислимым типом, а значит и его значения могут быть использованы в качестве значений индекса. Аналогичные рассуждения можно отнести к типу CHAR. Тип компонентов массивов может быть любым простым или сложным. Рассмотрим с учетом сказанного несколько примеров описания массивов с различной формой записи

ТУРЕ MONTH = (JAN, FEB, MAR);

MAS1 = ARRAY [1..10, 1..20] OF INTEGER;

или

MAS1 = ARRAY [1..10] OF ARRAY [l..20] OF INTEGER;

или

MAS = ARRAY [l..20] OF INTEGER;

MAS1 = ARRAY [1..10] OF MAS;

MAS2 = ARRAY [-10..10] OF REAL;

МAS3 = ARRAY [‘A'.,'D'} OF ARRAY [1..4] OF BOOLEAN;

MAS4 = ARRAY [BOOLEAN] OF CHAR;

VAR A: ARRAY [MONTH] OF REAL;

B:MAS1; C:MAS2; D:MAS3; K:MAS4;

Если в качестве базового взят другой массив, образуется многократный массив (в нашем выше примере двумерный массив MAS1).

Для описания массива можно использовать предварительно определенные константы; например

const А1 = -10; А2 = 10;

VAR MAS2: ARRAY [1..A1,1..A2] OF REAL;

После описания (объявления) массива в разделе описаний каждый элемент массива можно обработать уже в разделе операторов, используя индексированные переменные. Можно инициализировать массив, осуществить ввод-вывод массива и т.д. При этом указанные операции осуществляютьсяпоэтапно.

Например:

- инициализация двумерного массива А [5,10] (присваивание каждому его элементу одного и того же значения)

FOR I:= 1 ТО 5 DO

FOR J:= 1 ТО 10 DO A [I. J]:= 0;

- ввод данных массива В [15] с экрана терминала

FOR I:= 1 ТО 15 DO

READLN (В [I]);

- вывод значений элементов массива С [7,9]

FOR I:= 1 TO 7 DO

FOR J:= 1 TO 9 DO WRITELN (C [I,J]);

- копирование массива А [10] в массив В [10]

FOR I:= 1 ТО 10 DO В [I]:= A [I];

или

В:= A;

при этом оба массива А и В должны быть идентичны по структуре, т.е. иметь одинаковые типы индексов и одинаковые типы компонентов.

Общее задание

1. Ознакомиться с общими сведениями данной лабораторной работы, изучив:

- способы описания и обработки массивов одномерных, двумер­ных;

- способы инициализации, копирования, ввода и вывода массивов.

2. Составить алгоритм и программу решения задачи; (см. индивиду­альные задания.

3. Отладить на ЭВМ рабочую программу. Распечатать входные дан­ные, листинг программы и результат решения задачи.

Индивидуальные задания.

1. Напечатать те элементы массива А (100), индексы которых явля­ются степенями двойки (1,2,4,8,16,...)

2. Найти максимальный и минимальный элементы массива Х и поме­нять их местами.

3. Определить сумму элементов массива А (50), кратных трем.

4. Напечатать те элементы массива А (100), индексы которых явля­ются полными квадратами (1,4,9,16,25,...)

5. Составить программу циклического сдвига элементов массива А (10) на 5 позиций влево.

6. Задан целочисленный вектор А (10). Построить вектор В (10), приняв в качестве первых его компонент все отрицательные компо­ненты вектора А (с сохранением порядка следования), а в качестве остальных - все неотрицательные компоненты вектора А. Распечатать А и В.

7. Напечатать те элементы массива А (100), индексы которых явля­ются числами Фибоначчи (1,2,3,5,8,13,...)

8. Составить программу циклического сдвига элементов массива В (10) на 6 позиций вправо.

9. Элемент вектора называется локальным минимумом, если он стро­го меньше двух своих соседей. Подсчитать количество локальных минимумов вектора Х (25). Предусмотреть распечатку значений ло­кальных минимумов и их соседей, а также порядковые номера этих элементов в векторе X.

10. Дана последовательность из 20 различных целых чисел. Найти сумму чисел этой последовательности, расположенных между максимальным и минимальным числами (в сумму включить и оба этих числа).

11. Даны действительные числа а1950, а1951,..., а1980 - количество осадков, выпавших в Киеве в течении 30 лет. Надо вычислить среднее количество осадков и отклонение от среднего для каждого года.

12. Даны действительные числа а1,...,а20. Получить числа b1,...,b20, где т - среднее арифметическое всех членов последовательности а1,...,а20, кроме ai (i= 1,2,„20).

13. Даны действительные числа а1,...,an, bl,...,bn. Вычислить (ai + bn) (а2 + bn-1)... (an + b1).

14. Даны действительные числа al,a2,...a2n. Получить a1,an+1,a2,an+2,...,an,a2n.

15. Даны действительные числа а1,...,an. Если в результате замены отрицательных членов последовательности а1,...,an их квадратами члены будут образовывать неубывающую последовательность, то по­лучить сумму членов исходной последовательности; в противном случае получить их произведение.

16. Даны действительные числа а12,...,а2n. Получить a1,a2n,a2,a2n-1,a3,...,an,an+1.

17. Даны целые числа а1,...,а20. Получить новую последовательность, выбросив из исходной все члены со значением max (а1,...,а20).

18. Даны действительные числа а12,...,а2n. Получить a12n, а22n-1,...,аnn+1.

19. Даны целые числа а1,...,а20. Получить новую последовательность, вставив в исходную все члены со значением min (а1,...,а20).

20. Даны действительные числа а1,...,а17. Получить a11,a12,...,a17,a10,a9,...,a1.

21. Даны целые числа а1,...,an. Все члены последовательности с чет­ными номерами, предшествующие первому по порядку члену со зна­чением max (а1,...,an), домножить на max (а1,...,an).

22. Даны целые числа а1,...,an, каждое из которых отлично от нуля. Если в последовательности отрицательные и положительные члены чередуются (+,-,+,-,...или -, +,-, +,...), то ответом должна служить са­ма исходная последовательность. Иначе получить все отрицательные члены последовательности, сохранив порядок их следования.

23. Даны натуральное число m, действительные числа а1,...,а20, кото­рые попарно различны. В последовательности а1,...,а20 поменять местами наибольший член и член с номером m (m<20).

24. Даны действительные числа а1,...,а20. Получить max (а120219,...,а1011);

25. Даны действительные числа а1,...,а20. Преобразовать эту после­довательность по правилу: большее из ai и а10+i (i= 1,...,10) принять в качестве нового значения ai, а меньшее - в качестве нового зна­чения а10+i

26. Даны целые числа а1,...,а20. Наименьший член последователь­ности а1,...,а20 заменить целой частью среднего арифметического всех членов, остальные члены оставить без изменения. Если в после­довательности несколько членов со значением min (а1,...,а20), то заменить последний по порядку.

27. Даны целые числа а1,...,а20. Получить новую последовательность из 20 целых чисел, заменяя ai нулями, если |ai | =max(al,...,a20), и заменяя ai единицей в противном случае.

28. Даны целые числа а1,...,а10, b1...,b10. Преобразовать последова­тельность b1,...,b10 по правилу: если ai, то bi увеличить в 10 раз, иначе bi заменить нулем.

29. Даны действительные числа а1,...,а10. Требуется домножить все члены последовательности а1,...,а10 на квадрат ее наименьшего чле­на, если a1 > = 0; и на квадрат ее наибольшего члена, если a1 < 0

30. Даны действительные числа а1,...,а10 (все числа попарно раз­личны). Поменять в этой последовательности местами наибольший и последний члены.

* Схемы алгоритмов ряда перечисленных задач представлены в общих све­дениях лабораторной работы №7.

Контрольные вопросы.

1. Может ли быть любым тип элементов массива?

2. Могут ли элементы некоторого массива быть числами 16, 16.17, 24.7,24?

3. Может ли массив содержать один элемент? Ни одного элемента?

4. Индекс массива может быть типа INTEGER или REAL?

5. Какие из приведенных описаний массивов являются не­правильными и почему?

a) VAR Х: ARRAY [1..100] of REAL;

b) TYPE MAS = ARRAY ['A'..'F'];

VAR X: MAS;

в) VAR A: ARRAY [INTEGER] OF CHAR;

r) VAR MAS: ARRAY [TRUE..FALSE] OF CHAR;

д) TYPE Город = (Киев, Пятигорск, София, Вена);

VAR X: ARRAY [Город] OF REAL;

e) VAR X: ARRAY [1..5,1..10] of REAL;

ж) TYPE MAS = ARRAY ['A'..'D'.-5..5] OF INTEGER;

VAR A: MAS;

3) VAR A: ARRAY [4,5] OF INTEGER;

6. Сколько компонентов содержит каждый из описанных ниже мас­сивов?

a) VAR X: ARRAY ['A'..'D',2..6] OF INTEGER,

b) VAR A: ARRAY [TRUE..FALSE] OF ARRAY [1..5] OF CHAR;

в) TYPE VIK= [A1,A2.A3,A4,A5];

VAR M: ARRAY [VIK] OF ARRAY [VIK] OF BOOLEAN;

7. В чем состоит особенность использования приемов программи­рования при обработке массивов?

8. Можно ли переписать массив Х в массив Y с помощью оператора присваивания Y:=X?

9. Указать особенности ввода и вывода массивов.

ЛАБОРАТОРНАЯ РАБОТА №7

Цель работы - закрепление навыков работы со структурирован­ными типами данных - массивами; овладение навы­ками реализации простейших алгоритмов работы с массивами. *

- Суммирование элементов массива, диагональных элементов матрицы, элементов строк матрицы, двух массивов.

- Транспонирование матрицы.

- Умножение матрицы на вектор, матрицы на матрицу.

- Удаление (включение) к-ой строки из (в) матрицы (у).

- Перестановка строк матрицы.

- Поиск минимального (максимального) элемента в массиве.

- Преобразование матрицы в одномерный массив.

- Сортировка (упорядочение) массива.




Поделиться с друзьями:


Дата добавления: 2014-12-17; Просмотров: 1084; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.046 сек.