Каким способом можно заполнить массив с помощью оператора присваивания случайными числами с помощью

Каким способом можно заполнить массив с помощью оператора присваивания случайными числами с помощью

Ввод значений элементов массива можно осуществить несколькими способами (рис. 4.3).

Рис. 4.3. Способы ввода значений элементов массива

а) Ввод элементов массива с помощью оператора присваивания

Это самый нерациональный способ ввода.

var a: array [1..4] of word;

б ). Ввод элементов массива с клавиатуры

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

var a: array [1..10] of integer;

for i:=1 to 10 do read(a[i]);

Здесь цикл перебирает все значения индекса массива. А чтобы было более наглядно и удобно можно использовать и такую запись операторов в цикле.

for i:=1 to 10 do

write(‘ введите ‘,i, ‘ элемент : ’);

в ). Ввод элементов массива с помощью генератора случайных чисел

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

var a: array [1..10] of real;

for i:=1 to 10 do

В этом случае, функция random генерирует псевдослучайные действительные числа в интервале от 0 до 1. Для генерации положительных и отрицательных действительных чисел в произвольном диапазоне, отрезок [0,1] растягивают и сдвигают, например, так a[i]:=10*random-5 присваивает элементам массива действительные числа от -5 до 5.

Для генерации значений элементов целочисленного массива из определенного диапазона (0…N-1) используют функцию random(N):

var b: array [1..10] of integer;

for i:=1 to 10 do

В этом случае значениями элементов массива b будут целые числа от 0 до 9.

г). Ввод с помощью описания массива как типизированной константы

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

const a: array [1..5] of integer = (5,4,9,1,2);

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

Источник

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

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

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

Вообще, массив – однородный, упорядоченный структурированный тип данных с прямым доступом к элементам.

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

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

Пример: числовая последовательность четных натуральных чисел 2, 4, 6, . N представляет собой линейный массив, элементы которого можно обозначить А[1]=2, А[2]=4, А[3]=6, . А[К]=2*(К+1), где К — номер элемента, а 2, 4, 6, . N — значения. Индекс (порядковый номер элемента) записывается в квадратных скобках после имени массива.

Например, A[7] — седьмой элемент массива А; D[6] — шестой элемент массива D.

Для размещения массива в памяти ЭВМ отводится поле памяти, размер которого определяется типом, длиной и количеством компонент массива. В языке Pascal эта информация задается в разделе описаний. Массив описывается так:

Читайте также:  Способы формирования целей менеджмент

Чаще всего типом индекса является диапазон. Например, — описывается массив В , состоящий из 5 элементов и символьный массив R , состоящий из 34 элементов. Для массива В будет выделено 5*6=30 байт памяти, для массива R — 1*34=34 байта памяти.

Базовый тип элементов массива может быть любым простым или структурированным, за исключением файлового.

Кроме того, массив можно объявить с использованием собственного типа:

Заполнить массив можно следующим образом:

1) с помощью оператора присваивания. Этот способ заполнения элементов массива особенно удобен, когда между элементами существует какая-либо зависимость, например, арифметическая или геометрическая прогрессии, или элементы связаны между собой рекуррентным соотношением.

Задача 1. Заполнить одномерный массив элементами, отвечающими следующему соотношению:

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

Задача 2. Заполнить одномерный массив с помощью датчика случайных чисел таким образом, чтобы все его элементы были различны.

2) ввод значений элементов массива с клавиатуры используется обычно тогда, когда между элементами не наблюдается никакой зависимости. Например, последовательность чисел 1, 2, -5, 6, -111, 0 может быть введена в память следующим образом:

Над элементами массивами чаще всего выполняются такие действия, как

а) поиск значений;

б) сортировка элементов в порядке возрастания или убывания;

в) подсчет элементов в массиве, удовлетворяющих заданному условию.

Сумму элементов массива можно подсчитать по формуле S=S+A[I] первоначально задав S =0. Количество элементов массива можно подсчитать по формуле К = К +1, первоначально задав К =0. Произведение элементов массива можно подсчитать по формуле P = P * A[I] , первоначально задав P = 1.

Задача 3. Дан линейный массив целых чисел. Подсчитать, сколько в нем различных чисел.

Тест: N = 10; элементы массива — 1, 2, 2, 2, -1, 1, 0, 34, 3, 3. Ответ: 6.

Задача 4. Дан линейный массив. Упорядочить его элементы в порядке возрастания.

Тест: N = 10; элементы массива — 1, 2, 2, 2, -1, 1, 0, 34, 3, 3.

Ответ: -1, -1, 0, 1, 2, 2, 2, 3, 3, 34.

Если два массива являются массивами эквивалентных типов, то возможно присваивание одного массива другому. При этом все компоненты присваиваемого массива копируются в тот массив, которому присваивается значение. Типы массивов будут эквивалентными, если эти массивы описываются совместно или описываются идентификатором одного и того же типа. Например, в описании типы переменных A, B эквивалентны, и поэтому данные переменные совместимы по присваиванию; тип переменных C, D также один и тот же, и поэтому данные переменные также совместны по присваиванию. Но тип переменных C, D не эквивалентен типам переменных A, B, E, поэтому, например, A и D не совместны по присваиванию. Эти особенности необходимо учитывать при работе с массивами.

При работе с массивами целесообразно использовать процедуры и функции. Вот типовые процедуры:

Задача 5. Дан линейный массив. Найти: сумму минимального и максимального элементов; количество отрицательных элементов, стоящих на чётных местах. Изменить массив, вычеркнув из него нечетные элементы.

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

Например, данные о планетах Солнечной системы представлены следующей таблицей:

Планета Расст. до Солнца Относ. обьем Относ. масса
Меркурий 57.9 0.06 0.05
Венера 108.2 0.92 0.81
Земля 149.6 1.00 1.00
Марс 227.9 0.15 0.11
Юпитер 978.3 1345.00 318.40
Сатурн 1429.3 767.00 95.20
Читайте также:  Самые необычные способы ориентирования

Их можно занести в память компьютера, используя понятие двумерного массива. Положение элемента в массиве определяется двумя индексами. Они показывают номер строки и номер столбца. Индексы разделяются запятой. Например: A[7, 6], D[56, 47].

Заполняется двумерный массив аналогично одномерному: с клавиатуры, с помощью оператора присваивания. Например, в результате выполнения программы: элементы массива примут значения A[1, 1] = 457; A[1, 2] = 457; A[2, 1] = 458; A[2, 2] = 458; A[3, 1] = 459; A[3, 2] = 459.

При описании массива задается требуемый объем памяти под двумерный массив, указываются имя массива и в квадратных скобках диапазоны изменения индексов.

При выполнении инженерных и математических расчетов часто используются переменные более чем с двумя индексами. При решении задач на ЭВМ такие переменные представляются как компоненты соответственно трех-, четырехмерных массивов и т.д.

Однако описание массива в виде многомерной структуры делается лишь из соображений удобства программирования как результат стремления наиболее точно воспроизвести в программе объективно существующие связи между элементами данных решаемой задачи. Что же касается образа массива в памяти ЭВМ, то как одномерные, так и многомерные массивы хранятся в виде линейной последовательности своих компонент, и принципиальной разницы между одномерными и многомерными массивами в памяти ЭВМ нет. Однако порядок, в котором запоминаются элементы многомерных массивов, важно себе представлять. В большинстве алгоритмических языков реализуется общее правило, устанавливающее порядок хранения в памяти элементов массивов: элементы многомерных массивов хранятся в памяти в последовательности, соответствующей более частому изменению младших индексов.

Задача 6. Заполнить матрицу порядка n по следующему образцу:

Задача 7. Дана целочисленная квадратная матрица. Найти в каждой строке наибольший элемент и поменять его местами с элементом главной диагонали.

Задача 8. Задана прямоугольная целочисленная таблица размером m × n . Указать столбец (назвать его номер), где минимальное количество элементов, кратных сумме индексов.

Источник

Пример 5.4. Заполнение массива с помощью генератора произвольных чисел.

Тема 5. Cтруктурированные типы данных. Линейные (одномерные) массивы

Понятие массива

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

МАССИВ — упорядоченная группа фиксированного количества переменных одного типа, имеющая общее имя. «Группа переменных» в данном смысле означает, что каждый элемент массива является переменной, для хранения значения которой в памяти отводится определенная область. «Упорядоченная» — означает, что переменные в массиве хранятся не хаотично, а в установленном порядке, по очереди. «Фиксированное количество» — означает, что количество переменных в массиве не бесконечно, оно ограничено определенным числом (размерностью массива), которое указывается при описании массива. «Одного типа» — означает, что переменные, входящие в массив, должны хранить данные одного типа (Real, Integer, Char, Boolean и т.д.), который называется типом элементов массива.

Каждому массиву присваивается собственное имя (идентификатор). По аналогии с переменными, значения элементов массива (переменных, составляющих массив) до выполнения программы не определены. Значения в элементы массива записываются с помощью оператора присваивания. Над переменными, составляющими массив (над элементами массива) определены те же действия, что и над обычными переменными: операции присваивания и считывания значений, преобразование и сравнение их.

Линейные одномерные массивы (вектора данных)

Каждый элемент массива имеет свое имя, представляющее собой имя массива и стоящие за ним квадратные скобки, в которых указывается индекс элемента — целое число, равное порядковому номеру этого элемента в массиве. Таким образом, для ссылки на отдельный элемент массива необходимо указать имя массива, а затем в «[ ]» индекс (номер) элемента:

Читайте также:  Назовите основные способы проецирования

Например: A[1], B[14], Mas_2[12]. Кроме того, в качестве индекса можно использовать не только целое число, соответствующее порядковому номеру этого элемента в массиве, но и выражение целого типа. Например: A[5+6] или B[i+7] или Mas_2[i div k].

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

К имени массива предъявляются те же требования, что и к имени переменной. Размерность — это диапазон целых чисел, каждое из которых является порядковым номером (индексом) одной из ячеек массива. Обычно диапазон индексов задают, начиная от единицы: [1..100]. Это удобно, но не является обязательным. Важно лишь, чтобы правая граница диапазона была больше или равна левой границы.

Пример 5.1. Описание линейных массивов.

var m: array[1..20] of real;

m2: array[1..N] of integer;

A: array[-N..0] of integer;

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

Вводить и выводить значения из массивов возможно только поэлементно, и для этого используют в цикле операторы: Read, Readln, Write, Writeln и оператор присваивания.

Пример 5.2. Ввод/вывод массива (Readln/Writeln).

Ввод значений массива через оператор Readln, вывод заполненного массива с помощью оператора Writeln.

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

var m: array[1..n] of real;

for i:=1 to N do writeln(‘m[‘, i,’] = ‘, m[i]);

Пример 5.3. Заполнение массива с помощью оператора присваивания.

Заполнение элементов массив A квадратами их индексов.

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

var a: array[1..n] of integer;

for i:=1 to N do a[i]:=i*i;

for i:=1 to N do write(a[i],’ ‘);

Кроме приведенных выше двух способов заполнения массива (с помощью оператора чтения и присваивания) существует еще один — с помощью генератора произвольных чисел. Для того, чтобы воспользоваться этим способом необходимо, первое — подключить генератор произвольных чисел с помощью команды randomize, второе — получить с помощью функции random произвольное значение. Команда randomize обычно указывается до применения функции random и вне цикла. Функция random работает следующим образом.

для получения случайного целого значения, используют функцию random с параметром:

random(N), которая возвращает произвольное значение из диапазона чисел: от 0 до N-1.

для получения случайного вещественного значения, используют функцию random без параметра: random, которая возвращает произвольное вещественное значение из диапазона чисел: [0,1).

Для большей наглядности приведем пример.

Пример 5.4. Заполнение массива с помощью генератора произвольных чисел.

Массив А заполняется целыми значениями из диапазона от -50 до 50, массив В вещественными числами из диапазона: [-50,50).

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

var a: array[1..n] of integer;

b: array[1..n] of real;

for i:=1 to N do a[i]:=random(101)-50;

for i:=1 to N do write(a[i]:5);

for i:=1 to N do b[i]:=random(101)*random-50;

Источник

Оцените статью
Разные способы