Опишите массивы если на жестком диске компьютера хранится 20 файлов

Обновлено: 07.07.2024

Описание слайда:

Массив. Описание массива. Ввод и вывод элементов массива.

Описание слайда:

Массив – это обозначаемая одним именем конечная последовательность однотипных элементов.
Индекс – место каждого элемента в массиве (в этой последовательности).
Если индекс один, то массив – одномерный. Если индексов несколько, то массив – многомерный.

Описание слайда:

Массив в PascalABC описывается (объявляется) так:
Var A:array[1..10] of integer;

Var B:array[1..20] of real;

Диапазон индексов определяет максимально возможное количество элементов в массиве – размер массива

Описание слайда:

Ввод элементов массива
1. Используя константы (если значения элементов массива не изменяются):
Const A:array [1..8] of integer=(2, 3, 5, 7, 11,13, 17,19);
2. Для ввода элементов массива с клавиатуры используются стандартные процедуры read и readln:
var a: array[1..5] of integer;
i: integer;
Begin
For i:=1 to 5 do
read(a[i]);
End.

Описание слайда:

3. С помощью датчика случайных чисел. Целые числа на отрезке [0; n]:
For i:=1 to 10 do a[i]:=random(n+1);
Например, 10 целых случайных чисел на отрезке
[0; 20]:
For i:=1 to 10 do a[i]:=random(20+1);
или For i:=1 to 10 do a[i]:=random(21);
4.С помощью датчика случайных чисел. Целые числа на отрезке [a; b]:
For i:=1 to 10 do a[i]:=random(b-a+1)+a;
For i:=1 to 10 do a[i]:=random(a,b);
Например, 10 целых случайных чисел на отрезке [-20; 20]:
For i:=1 to 10 do a[i]:=random(20-(-20)+1)+(-20);
или For i:=1 to 10 do a[i]:=random(41)-20;
или For i:=1 to 10 do a[i]:=random(-20, 20);

Описание слайда:

Вывод элементов массива
Для вывода используют стандартные процедуры
write и writeln:

Описание слайда:

Var a:array [1..5] of integer;
i:integer;
begin
for i:=1 to 5 do a[i]:=random(11);
for i:=1 to 5 do write(a[i]);
end.

Описание слайда:

Домашнее задание § 3

Выбранный для просмотра документ План урока №3.docx

10 класс 3 урок

Тема «Понятие массива. Описание массива. Операции над массивами. Ввод и вывод элементов массива»

Обучающие цели обеспечивают усвоение предметного содержания темы «Понятие массива. Описание массива. Операции над массивами. Ввод и вывод элементов массива», что позволит учащимся:

v на уровне представления – называть понятия «массив», «индекс массива», «размер массива» и др;

v на уровне понимания – формулировать определение основных понятий и различать их;

v на уровне применения – уметь самостоятельно описывать массив, называть способы ввода и вывода элементов массива;

v на уровне творчества – самостоятельно отвечать на теоретические вопросы темы, выполнять простейшие практические задания на описание, ввод и вывод массива, исследовать полученные результаты.

Развивающие:

v создавать условия для развития мышления, умения анализировать, выделять главное, обобщать и систематизировать;

v создавать условия для развития интереса к учению.

Воспитательные:

v воспитывать самостоятельность, сосредоточенность;

v воспитывать дисциплинированность.

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

I. Организационный момент. (2 мин)

II. Актуализация знаний и мотивация учащихся на изучение нового материала.(2 мин)

III. Объяснение нового материала. Совместная работа с презентацией. (25 мин)

IV. Физкультминутка (2 мин. Зарядка для глаз.)

V. Выходной тест. (Приложение 1) (10 мин).

VI. Подведение итогов урока и домашнее задание. Обсудить с учащимися основной материал урока. Ответить на вопросы. Д.З. §3 (4 мин)

1. Определите, сколько элементов содержит описанный ниже массив?

1) Var A : array [1..12] of integer;

2) Var A : array [3..9] of integer;

3) Var A : array [0..5] of integer;

2.Определите тип переменных, необходимый для описания:

1) Порядкового номера ученика в классном журнале;

2) Температура тела человека;

3.Опишите массив М, содержащий данные:

1) О количестве учеников в каждом из девяти классов;

2) О плотности пяти материалов, выраженной в г/м 3 ;

4.Для объявления массива в языке Pascal ABC используют служебные слова:

5.Обращение к элементу массива осуществляется:

6. Правильное описание массива А из 10 целых чисел:

1) A := array [1..10] of integer;

2) Var A: array 9 of integer;

3) Var A= array [1..10] integer;

4) Var A: array [1..10] of integer;

1. Определите, сколько элементов содержит описанный ниже массив?

1) Var A : array [0..5] of integer;

2) Var A : array [1..12] of integer;

3) Var A : array [-1..6] of integer

2. Определите тип переменных, необходимый для описания:

1) Количество взятых в библиотеке книг;

2) Средний балл успеваемости ученика.

3. Опишите массив М, содержащий данные:

1) О длине шести рек Беларуси, округлённой до километров;

2) О среднем атмосферном давлении за каждый из семи дней недели.

4. Для объявления массива в языке Pascal ABC используют служебные слова:

5.Обращение к элементу массива осуществляется:

6. Правильное описание массива А из 20 целых чисел:

1) A := array [1..20] of integer;

2) Var A: array 7 of integer;

3) Var A= array [1.. 2 0] integer;

4) Var A: array [1..20] of integer;

Если Вы считаете, что материал нарушает авторские права либо по каким-то другим причинам должен быть удален с сайта, Вы можете оставить жалобу на материал.

Линейным массивом можно обозначить, например, оценки учеников класса. Каждая оценка является значением элемента массива оценок "A" и имеет порядковый номер (индекс). В Турбо-Паскале значение индекса указывается в квадратных скобках после имени массива. Можно создать массив фамилий "S" учеников класса. Значением элемента массива будет фамилия ученика, а индексом - порядковый номер по списку. Пусть дан список фамилий учеников и их оценки:

Фамилии Оценки
1 Иванов 5
2 Петров 4
3 Сидоров 5
4 Титов 5
. . .
30 Якупов 4

Описание массивов: Присвоение значений элементам массива: Приведем таблицу обозначений и соответствия элементам массива, их значений и индексов:

Номер элемента индекса 1 2 3 4 1 30
Элементы массива "S" S[ 1 ] S[ 2 ] S[ 3 ] S[ 4 ] S[ i ] S[ 30 ]
Значения элементов Иванов Петров Сидоров Титов . Якупов
Элементы массива "A" A[ 1 ] A[ 2 ] A[ 3 ] A[ 4 ] A[ i ] A[ 30 ]
Значения элементов 5 4 5 5 . 4

Если известна зависимость, по которой изменяются значения элементов массива, то присвоение значений удобно проводить в операторах цикла c параметром или с условием. Например, присвоим значения элементам массива "y" по зависимости: y=sin(x), где x= Pi * i/180, 0<= i <=180. Присвоим случайные значения в диапазоне от -30 до +40 ста элементам массива "R": Присвоим значения семи элементам массива "A" оператором Readln: При выводе массива на экран удобно размещать данные в виде таблицы - в несколько колонок. Для вывода обозначений переменных ("шапки таблицы") можно использовать операторы вывода символов в цикле, например: - шапка для вывода в три пары колонок значений переменных "S" и "A". Шапка занимает 66 позиций (по ширине экрана в текстовом режиме размещается 79 символов и пробел). Оператор Writeln; переводит курсор на новую строчку.

Вывод значений ста элементов массивов "S" и "A" в три пары колонок, произведем операторами: В этом случае данные таблицы полностью не умещаются на экране и можно задержать прокрутку экрана при выводе данных, применяя оператор Readln после вывода, например, 20 строк.

В цикле удобно определять сумму элементов массива, наибольший (наименьший) элемент и создавать новые массивы, удовлетворяющие некоторому условию, например:

Двумерные массивы

Массивы, рассмотренные выше, имеют элементы, упорядоченные по одному индексу и называются одномерными массивами или векторами. Массив может быть двумерным, трехмерным и т. д. Двумерные массивы имеют элементы, упорядоченные по двум индексам и часто называются матрицами. В Турбо-Паскале при описании многомерного массива диа-пазоны изменения индексов перечисляются через запятые, например: Рассмотрим пример работы с двумерными массивами. Обозначим массивом оценки учеников класса по нескольким предметам. Каждая оценка является значением элемента массива оценок "A" и имеет порядковый номер (два индекса). Поставим в соответствие первому индексу номер фамилии в списке учеников, а второму - номер предмета, по которому получена оценка. Тогда двумерный массив оценок можно представить в виде таблицы: каждый элемент a[i, j] находится на пересечении I-ой строки и J-го столбца.
Исходные данные могут быть представлены в виде таблицы оценок:
Годовые оценки по предметам:

1 2 3 4 5 6
Фамилия Физика Химия Алгебра Геометрия История Биология
1 Иванов 4 5 3 4 5 5
2 Петров 4 5 4 3 4 4
3 Сидоров 5 5 3 4 5 4
. . . . . . . .
30 Якупов 4 3 4 5 4 5

Можно создать одномерные массивы фамилий "S" учеников класса и наименований предметов "P" . Значением элемента массива "Р" будет наименование предмета, а индексом - порядковый номер предмета, например: 1 - физика, 2 - химия, 3 - алгебра, 4 - геометрия, 5 - история, 6 - биология. Приведенная выше таблица может быть представлена в виде набора элементов ( число строк = N, число столбцов = M ):

Номер строки "I" Номер столбца "J" 1 2 3 4 . J . M
Массив "S" Массив "P" P[1] P[2] P[3] P[4] . P[J] . P[M]
1 S[1] Массив "A" a[1, 1] a[1, 2] a[1, 3] a[1, 4] . a[1, j] . a[n, m]
2 S[2] a[2, 1] a[2, 2] a[2, 3] a[2, 4] . a[2, j] . a[2, m]
3 S[3] a[3, 1] a[3, 2] a[3, 3] a[3, 4] . a[3, j] . a[3, m]
4 S[4] a[4, 1] a[4, 2] a[4, 3] a[4, 4] . a[4, j] . a[4, m]
. . . . . . . . . .
I S[I] a[i, 1] a[i, 2] a [i, 3] a [i, 4] . a[i, j] . a[i, m]
. . . . . . . . . .
N S[N] a[n, 1] a[n, 2] a[n, 3] a[n, 4] . a[n, j ] . a[n, m]

Массив оценок можно задать с использованием функции Random, например: Для вывода наименований предметов ( "шапка" таблицы ) можно использовать операторы: Для вывода элементов массива "A" на экран удобно использовать вложенный цикл: Для расчета массива "SS" - сумм "M" элементов в каждой из "N" строк массива "A" (NxM) можно применить операторы: Здесь для каждого индекса "i" от 1 до N происходит суммирование элементов A[i, j] по индексу "j" от 1 до M. При модификации массива "A" изменяется расположение данных в исходном массиве, например, в случае вставки данных из линейного массива "B" в колонку с номером "M1" необходимо сдвинуть данные в колонках J >= M1 используя операторы: Если порядковый номер предмета изменится, то необходимо изменить расположение оценок в массиве "A", например, перестановку колонок с оценками по физике и химии можно сделать операторами: Примечание: при модификации массива "A" не забудьте соответственно изменять расположение данных в сопутствующих массивах, например, "P" или "S". При создании новых массивов согласно некоторым условиям выбираются данные из элементов исходного массива. Например, для создания массива "В" из четных столбцов массива "A" можно использовать операторы: Для создания массива "В", состоящего из строк массива "A", удовлетворяющих условию A[i, 1] > C, где C - заданное число, можно использовать операторы: Для сравнения значений элементов массива удобно строить столбиковые диаграммы (гистограммы). Например, для вывода "N" значений положительных элементов массива "SS" в виде горизонтальной гистограммы можно использовать операторы: Добавив операторы вывода порядкового номера и значений SS[i] получаем гистограмму в виде:

Примеры:

Пример1: Дан двумерный массив. В каждой строке все его элементы, не равные нулю, переписать (сохраняя порядок) в начало строки, а нулевые элементы - в конец массива. Новый массив не заводить.

Этапы решения задачи:
1. Суть одного из алгоритмов решения данной задачи состоит в том чтобы "просматривать" массив построчно и находить в каждой строке пару (0:число), а затем менять их местами между собой и так до тех пор пока в строке таких пар не окажется.
2. Напишем программу на псевдо паскале:

3.Составим блок схему алгоритма

Детализируем блок "Упорядочиваем 1-ю строку"

Блок схема алгоритма целиком:

4.Приведем программу на языке Паскаль:

· Описание массивов и обращение к ним на языке Pascal.

· Ввод и вывод элементов массива.

Массив – это величина регулярного типа. Регулярный тип данных – это структурный тип данных, который используется для хранения пронумерованных величин одного типа. Это означает, что массив состоит из ячеек оперативной памяти, в которых хранятся данные одного типа. Эти ячейки называются элементами массива. Они расположены в оперативной памяти компьютера последовательно и каждая из них имеет порядковый номер, который называется индексом элемента массива.

На языке Pascal массивы описываются в блоке описания используемых данных. Например, в разделах описания констант и переменных. Рассмотрим описание массива в разделе описания переменных. Сначала, как у любой переменной, у массива указывается имя или идентификатор дальше после двоеточия, через пробел, записывается служебное слово array, что в переводе с английского языка означает «массив». После него, через пробел, в квадратных, или иначе индексных, скобках указывается тип индексов элементов массива. После квадратных скобок, через пробел, следует служебное слово of, после которого, через пробел, указывается тип элементов массива.

<имя>: array [<тип индексов>] of <тип элементов>;

Чаще всего в качестве типа индексов указывается ограниченный тип, который представляет собой набор значений в указанном диапазоне. Диапазон указывается следующим образом:

[<Начальное значение>..<Конечное значение>]

Описание ограниченного типа


В качестве примера зададим массив, который будет хранить количество яблок в каждой из восьми корзин. Назовём массив k. Очевидно, что индексами элементов массива будут номера корзин – целые числа от 1 до 8. Поэтому в квадратных скобках укажем число 1, через две точки, после которого будет следовать число 8. Дальше запишем служебное слово of. После него укажем тип элементов массива. Пока мы не знаем количества яблок в корзинах, но очевидно, что это будут целые неотрицательные числа и мы предположим, что в одной корзине будет находиться не больше 255 яблок. Поэтому в качестве типа элементов массива укажем тип byte.

k: array [1..8] of byte;

Описание массива для хранения количества яблок в корзинах

При описании массивов важно понимать, что они занимают некоторый объём оперативной памяти, который в некоторых случаях может быть достаточно большим. Например, описанный нами массив для хранения количества яблок содержит 8 элементов типа byte. Переменные этого типа занимают объём оперативной памяти равный одному байту. Таким образом, нам нужно указанный объём оперативной памяти умножить на количество элементов массива.

1 байт × 8 элементов = 8 байт

Так мы вычислили, что заданный нами массив занимает 8 байт оперативной памяти. Рассмотрим ещё один массив, который содержит элементы с порядковыми номерами с 77 по 1100, принадлежащие к целочисленному типу integer. Количество элементов массива 1100 – 77 + 1 = 1024. Так наш массив содержит 1024 элемента. Одна переменная типа inetger в среде Pascal ABC занимает 4 байта оперативной памяти.

4 байта × 1024 элемента = 4096 байт = 4 Кб

Умножив этот объём на количество элементов, мы получим что данный массив будет занимать 4096 байт или 4 килобайта оперативной памяти.

Рассмотрим, как же можно обратиться к элементам массива из программы. Для этого указывается имя, или идентификатор массива, после которого, в квадратных скобках, указывается индекс одного из его элементов. Так, для того, чтобы узнать сколько яблок находится в пятой корзине, мы должны обратиться к элементу массива k с индексом 5 – k[5].

В качестве типа индексов элементов массива в среде Pascal ABC могут использоваться любые перечисляемые типы размерностью до 2 байт включительно. Например мы можем задать символьный или логический тип индексов массива. Индексами элементов таких массивов будут соответственно значения символьного или логического типа. Тип элементов массива не ограничен.

Часто при написании программы необходимое количество элементов в массиве неизвестно заранее, так как задаётся пользователем. При этом изменение количества элементов массива в теле программы невозможно. Поэтому при описании количество элементов массива задаётся максимально возможным по условию задачи, а при работе программы используется необходимая часть элементов массива в соответствии с данными, введёнными пользователем.

for i:=1 to n do

Цикл ввода элементов массива

for i:=1 to n do

Теперь рассмотрим, как организовать вывод массива. Вывод массивов также осуществляется поэлементно. Наиболее часто требуется вывести значения элементов массива в одну строку. Для этого достаточно написать такой же цикл с параметром, как и при вводе, только в нём будет следовать оператор write, выводящий на экран значение элемента массива с индексом i. Но так элементы массива будут выведены в одну строку без разделителей. Поэтому в этот же оператор вывода нужно добавить вывод некоторого разделителя после элемента массива, например, символа пробел.

for i:=1 to n do

Цикл вывода элементов массива


До этого мы рассматривали одномерные массивы. Однако в языке Паскаль можно использовать многомерные массивы. Начнём с двумерных. Наглядно такие массивы можно представить в виде таблицы значений, состоящей из строк и столбцов. Пример такого массива – таблица Пифагора. Двумерные массивы в языке Паскаль трактуются как массивы массивов. Пусть у нас есть 5 полок, на которых располагается по 8 корзин с яблоками. То есть, для описания количества яблок в корзинах нам нужен массив из 5 элементов. Элементами которого будут массивы из 8 элементов типа byte. Опишем такой массив. Назовём его t. После двоеточия будет следовать служебное слово array, после которого в квадратных скобках укажем тип индексов массива – целые числа от 1 до 5, по числу полок. После служебного слова of, укажем тип элементов массива. Это будут массивы, то есть укажем служебное слово array. В квадратных скобках укажем тип индексов 5 массивов, то есть целые числа от 1 до 8. Элементами этих массивов будут числа типа byte.

t: array [1..5] of array [1..8] of byte;

Описание массива массивов

Если двумерный массив описан таким образом, то при обращении к его элементам необходимо в первых квадратных скобках указывать номер массива – целое число от 1 до 5, а во вторых квадратных скобках – номер элемента в этом массиве – число от 1 до 8.

t[a][b], где 1 ≤ a ≤ 5, 1 ≤ b ≤ 8

Обращение к элементу описанного массива

Но возможна и более короткая форма описания массива, при этом в квадратных скобках указывается тип индексов первого массива, в нашем случае целые числа в диапазоне от 1 до 5, после него через запятую указывается тип индексов массивов, из которых он состоит, то есть целые числа в промежутке от 1 до 8. После квадратных скобок следует слово of, после него указывается тип элементов из которых состоят внутренние массивы, то есть byte.

t: array [1..5, 1..8] of byte;

Описание двумерного массива

Индекс элемента такого массива будет состоять из двух целых чисел, указанных через запятую. Первое из них будет в диапазоне от 1 до 5, а второе – от 1 до 8. Аналогично можно описывать массивы и с большим числом измерений, например, трёхмерные и четырёхмерные.

for i:=1 to n do

for j:=1 to m do

Цикл ввода элементов двумерного массива

Вывод элементов двумерного массива будет организован также с помощью вложенного цикла, однако вложенный цикл будет находиться в логических скобках и будет содержать оператор вывода элемента массива t[i, j]. После вложенного цикла во внешнем цикле будет следовать оператор writeln без параметров. Таким образом, мы получим построчный вывод элементов двумерного массива. Но так как значения элементов массива могут быть числами различной длины, стоит указать формат их вывода. Например, выделим для вывода каждого числа по 4 знаковых позиции. Тогда при выводе мы получим ровные столбцы из чисел.

for i:=1 to n do

for j:=1 to m do

Цикл вывода элементов двумерного массива

Помимо поэлементных действий над массивами, есть два случая, когда к массивам можно обращаться как к единому целому. Мы можем присвоить элементам одного массива значения элементов другого массива. Также мы можем проверить равенство и неравенство элементов одного массива элементам другого массива. В обоих случаях случаях у массивов должны совпадать типы индексов и типы элементов.

Важно запомнить:

· Массивы – это переменные, которые используются для хранения пронумерованных величин одного типа.

· Порядковый номер элемента массива называется индексом.

· Большинство операций над массивами, в том числе их ввод и вывод производятся поэлементно.

· Над массивами как над единым целым возможны 3 действия: присваивание, а также проверка их равенства и неравенства.

Тест состоит из 5 вопросов. На прохождение теста у Вас есть 1 попытка, последующие результаты учитываться не будут!

В современном мире ежесекундно происходит обработка огромного числа данных с помощью компьютера. Если необходимо обрабатывать данные одного типа — числа, символы, строки и др., то для их хранения можно воспользоваться типом данных, который называется массив.

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

Массив является структурированным (составным) типом данных. Это означает, что величина, описанная как массив, состоит из конечного числа других величин. Так, например, можно создать массивы из 10 целых или 100 вещественных чисел. Тип элементов массива называют базовым типом. Все элементы массива упорядочены по индексам (номерам элементов), определяющим местоположение элемента в массиве. В языке С++ элементы массива всегда нумеруются с нуля.

Массиву присваивается имя, посредством которого можно ссылаться на него как на единое целое. Элементы, образующие массив, упорядочены так, что каждому элементу соответствует номер (индекс), определяющий его место в общей последовательности (примеры 11.1—11.3). Индексы могут быть выражением, значение которого принадлежит любому простому типу, кроме вещественного. Индексы должны быть неотрицательными. Доступ к каждому отдельному элементу осуществляется обращением к имени массива с указанием индекса нужного элемента, индекс элемента записывается после имени в квадратных скобках (пример 11.4).

Впервые тип данных массив появился в языке Фортран (создан в период с 1954 по 1957 г. в корпорации IBM). Уже первые версии языка поддерживали трехмерные массивы (в 1980 г. максимальная размерность массива была увеличена до 7). Массивы были необходимы для создания математических библиотек, в частности содержащих процедуры решения систем линейных уравнений.

Пример 11.1. В 10 А классе 25 учащихся. Известен рост каждого в сантиметрах. Для хранения значений роста можно использовать массив А, состоящий из 25 целых чисел.

Индекс каждого элемента — порядковый номер учащегося из списка в классном журнале. Поскольку элементы массива нумеруются от нуля, то запись а[5] — рост ученика, который в журнале записан под номером 6.

Пример 11.2. Каждый день в декабре измеряли температуру воздуха. Для хранения значений температуры можно использовать массив t , состоящий из 31 вещественного числа.

Индекс элемента — номер дня в декабре со сдвигом на 1. Запись t[15] — температура воздуха 16 декабря.

Пример 11.3. В 10 Б классе 27 учащихся. В классном журнале указаны фамилия и имя каждого учащегося. Для хранения списка учащихся можно использовать массив s , состоящий из 27 строк.

Индекс каждого элемента — порядковый номер ученика из списка в классном журнале. Тогда запись s[5] — фамилия и имя учащегося под № 6.

Пример 11.4. Обращение к элементу массива: а[3], t[i], s[n-1] .

Язык программирования С++ поддерживает работу с массивами, которые достались ему в наследство от языка С. Однако работа с такими массивами требует глубокого понимания того, как они размещаются в памяти компьютера. В качестве альтернативы рекомендуется использовать шаблоны классов, которые описаны в стандартной библиотеке: array<> и vector<>.

11.2. Описание массивов

Мы будем рассматривать работу с массивом, используя тип данных vector , реализованный в стандартной библиотеке. Этот тип данных, как и уже знакомый вам тип данных string , является шаблонным классом, поэтому многие команды для работы будут одинаковыми.

Для работы с типом данных vector необходимо подключить одноименную библиотеку:

Для создания вектора используется следующая команда:

vector < тип элементов > имя_массива ( количество элементов );

Имя массива является идентификатором и задается по тем же правилам, что и имена любых других переменных.

Тип элементов задает значение базового типа для данного массива. Базовый тип может быть любым из известных вам типов (примеры 11.5–11.7).

Размер массива — количество элементов в нем.

Понятие вектора широко применяется в физике и математике. Так, например, в физике вектор рассматривается как структура, имеющая одновременно величину (модуль) и направление. Многомерные векторы используются в квантовой механике. В геометрии под векторами понимают направленные отрезки. Арифметическим вектором называют упорядоченную совокупность из n чисел. Вектор может рассматриваться как последовательность (кортеж) однородных элементов. Именно в таком виде вектор понимается в программировании.

Пример 11.5. Опишем массив, рассмотренный в примере 11.1. Размер описанного массива 25 элементов.

vector < int > a ( 25 );

Пример 11.6. Опишем массив, рассмотренный в примере 11.2. Размер описанного массива — 31 элемент.

vector < double > t ( 31 );

Пример 11.7. Опишем массив, рассмотренный в примере 11.3.

vector < string > s ( 27 );

Пример 11.8. Опишем массив, всем элементам которого вначале присваивается значение –1:

vector < int > a ( 25 , -1 );

11.3. Операции над массивами

Массивы, описанные типом данных vector , можно использовать в операциях присваивания. В результате выполнения этой команды все элементы одного массива будут переписаны во второй (пример 11.9). Если в описании векторы имеют разный размер, то он будет преобразован, поскольку векторы являются динамическими структурами, которые могут изменять свой размер во время выполнения программы.

Векторы можно сравнивать. При сравнении используют операции сравнения «==» и «!=». Векторы равны, если они содержат одинаковые элементы на тех же позициях, иначе они не равны.

Другие операции для массива как для типа данных не определены.

Пример 11.9. Пусть массивы a и b описаны следующим образом:

vector < int > a ( 25 ), b ( 30 );

В результате выполнения команды:

размер массива a будет увеличен до 30 элементов, все элементы в массиве a будут иметь те же значения, что и в массиве b .

В результате выполнения команды:

размер массива b будет уменьшен до 25 элементов, все элементы в массиве b будут иметь те же значения, что и в массиве a . Значения последних 5 элементов, которые исходно были в векторе b , будут потеряны.

Пример 11.10. Операции над индексированными переменными:

sr = ( t [ 0 ] + T [ 29 ]) / 2 ;

b [ k ] = a [ k ] * 2 ;

if ( s [ i ] < 0 ) …

n = s [ i ]. length ();

11.4. Ввод и вывод элементов массива

Для того чтобы работать с массивом, необходимо задать начальные значения элементов массива. Сделать это можно несколькими способами:

1) определение элементов массива как констант;

2) ввод элементов массива с клавиатуры;

3) использование случайных чисел для определения значений;

4) использование функций (собственных или стандартных) для определения значений;

5) ввод элементов массива из текстового файла.

Элементам массива можно задать значения при описании (примеры 11.11, 11.12). В этом случае количество элементов не задается, а определяется автоматически.

При вводе элементов массива с клавиатуры каждый элемент должен вводится отдельно. Если количество вводимых элементов определено, то можно воспользоваться циклом for (пример 11.13).

При описании вектора его размер может быть задан переменной. Важно, чтобы значение этой переменной было определено до описания вектора. Это значение может быть задано с помощью команды присваивания или введено с клавиатуры (пример 11.14).

При вводе строк нужно помнить, что пробел используется как разделитель. Если использовать для ввода команду cin , то элементами массива могут быть только отдельные слова строки ( пример 11.15). Если нужно, чтобы элементами массива были строки с пробелами, то для ввода необходима команда getline (пример 11.16).

Иногда бывает удобно задавать элементы массива случайным образом. Для этого используется функция rand(), которая генерирует случайное целое число из промежутка [0 ; 32768). Если элементы массива должны принадлежать отрезку [a ; b], то можно определить значение элемента массива как a[i]= rand() % (b – a + 1) + a ; (пример 11.17).

Вещественное случайное число в промежутке [0, 32.768) можно получить так: a[i]= 1. * rand() / 1000 ;

Выводить элементы массива можно в строку (пример 11.18) или в столбец (пример 11.19). Если элементы массива выводятся в строку, то между ними нужно выводить символ-разделитель (чаще всего используют пробел), иначе все числа будут распечатаны подряд как одно число с большим количеством цифр. Выводить элементы массива можно не только в прямом порядке, но и в обратном (пример 11.20).

Пример 11.21. Написать программу, которая сформирует массив из n четных чисел из отрезка [20, 70] случайным образом. Записать числа из массива в текстовый файл. Вывести на экран k -й элемент массива.

Этапы выполнения задания

I. Исходные данные: количество элементов n и массив a.

II Результат: искомый элемент.

III. Алгоритм решения задачи.

1. Ввод исходных данных.
2. Генерация массива.

2.1. Для того чтобы элементы массива были только четными, необходимо каждый полученный элемент умножать на 2.
2.2. Поскольку элементы умножаются на два, границы исходного отрезка нужно уменьшить в два раза.
2.3. Вывод массива по элементам.

3. Ввод значения k и вывод результата.

IV. Описание переменных:

n, k – int, a – vector <int>.

Пример 11.22. Написать программу, которая прочитает из текстового файла список фамилий учащихся, запишет их в массив и выведет из списка фамилии с номерами от k1 до k2 .

Этапы выполнения задания

I. Исходные данные: массив s и количество учащихся n, номера фамилий – k1 и k2 .

II. Результат: список заданных фамилий.

III. Алгоритм решения задачи.

Ввод исходных данных.
2. Вывод результата.

IV. Описание переменных:

n, k1, k2 – int, a – vector <string>.

Если для тестирования программы используются фамилии, написанные кириллицей, то важно сохранить текстовый файл в той же кодировке, которая устанавливается для консоли. По умолчанию для Блокнота может быть установлена кодировка UTF-8.


Пример 11.11. Описание числового массива, элементы которого являются константами.

Пример 11.12. Описание массива, элементы которого являются строковыми константами.

Пример 11.13. Ввести элементы массива a с клавиатуры.

vector < int > a ( 10 );

cout << "vvedi 10 chisel" << endl ;

for ( int i = 0 ; i < 10 ; i ++)

Пример 11.14. Ввести заданное количество элементов массива a .

cout << "kol-vo chisel" << endl ;

vector < int > a ( n );

cout << "vvedi chisla" << endl ;

for ( int i = 0 ; i < n ; i ++)

Пример 11.15. Ввод массива строк (без пробелов):

cout << "kol-vo elementov" << endl ;

vector < string > s ( n );

cout << "vvedi slova " << endl ;

for ( int i = 0 ; i < n ; i ++)

Пример 11.16. Ввод массива строк (с пробелами):

cout << "kol-vo elementov" << endl ;

vector < string > s ( n );

cout << "vvedi stroki" << endl ;

for ( int i = 0 ; i < n ; i ++)

getline ( cin , s [ i ]);

Пример 11.17. Случайным образом задать n элементов массива А. Каждый элемент — число из отрезка [-20; 20] .

cout << "kol-vo elementov" << endl ;

vector < int > a ( n );

for ( int i = 0 ; i < n ; i ++)

a [ i ] = rand () % 41 - 20 ;

Пример 11.18. Вывод элементов массива в строку (через пробел):

for ( int i = 0 ; i < n ; i ++)

Если элементы массива задаются случайным образом, то после генерации их нужно вывести. Это необходимо для проверки правильности работы, иначе непонятно, с какими данными работает программа.

Пример 11.19. Вывод элементов массива в столбец (по одному в строке):

for ( int i = 0 ; i < n ; i ++)

Пример 11.20. Вывод элементов массива в строку (в обратном порядке):

Читайте также: