260 likes | 401 Views
ОДНОМЕРНЫЕ. МАССИВЫ. В математике, экономике, информатике часто используются упорядоченные наборы данных, например, последовательности чисел, таблицы, списки фамилий. Для обработки наборов данных одного типа вводится понятие массива . . МАССИВ.
E N D
ОДНОМЕРНЫЕ МАССИВЫ
В математике, экономике, информатике часто используются упорядоченные наборы данных, например, последовательности чисел, таблицы, списки фамилий. Для обработки наборов данных одного типа вводится понятие массива.
МАССИВ • - это совокупность конечного числа данных одного типа.
Массив обозначается одним именем. Так, всю совокупность действительных чисел 1.6, 14.9, -5.0, 8.5, 0.46 можно считать массивом и обозначать одним именем, например, А. • Каждый элемент массива обозначается именем массива с индексом. Элементы массива упорядочены по значениям индекса.
В математике, как правило, индекс либо заключается в круглые скобки, либо указывается несколько ниже имени массива, например: А(1), А(2), А(3), А(4), А(5) или А1, А2, А3, А4, А5, или в общем виде {Ai}, где i=1,2,3,…,n. • В Паскале индекс заключается в квадратные скобки. Для рассмотренного примера элементами массива А являются: А[1]:=1.6, A[2]:=14.9, A[3]:=-5.0, A[4]:=8.5, A[5]:=0.46. • Таким образом – индекс определяет положение элемента массива данных относительно его начала.
Если в программе используется массив, то он должен быть описан. • Этот процесс состоит из двух этапов. • Сначала в разделе заявления типов массив задается следующим образом: type massiv = array [b .. e] of <тип данных>; Здесь massiv– это имя, данное нами новому типу, array– зарезервированное слово, определяющее массив;b и e – начальный и конечный индексы ячеек массива (номера ячеек), это натуральные числа; тип данных – любой, тот же самый integer, т.е. тип данных содержимого массива (например, массив целых чисел).
Теперь, на втором этапе, в разделе var мы заявим какую-нибудь переменную новым типом, например: var a: massiv; Вот и все. Теперь переменная а – это переменная массива. Можно задавать массив и непосредственно в разделе переменных. Просто нужно написать вместо названия типа его параметры: a: array [1 .. 10] of byte;
Присвоение значений элементам массива • 1. С помощью оператора Read (readln). var i, n: integer; a: array [1 .. 10000] of integer; begin /определяем число элементов в массиве/ write (‘Введите размер массива’); readln (n); /ввод элементов массива/ for i:=1 to n do write (‘a[‘, i, ’]’); readln (a [i]); end; /выводим на экран полученный массив/ for i:=1 to n do write (a [i], ‘ ‘); readkey; end.
2. С помощью описания элементов массива в разделе описания констант • Uses Crt; const n=5; a: array [1..5] of integer = (4,5,7,7,0); var i: integer; begin clrscr; /вывод массива/ for i: = 1 to n do write (a [i], ‘ ‘); readkey; end.
3. С помощью Функции Random [(x)] Эта функция формирует случайное число от 0 до Х целого или вещественного типа (перед обращением к функции ее целесообразно инициализировать, использовав процедуру Randomize). Х – параметр, указывающий диапазон значений случайного числа. Оно изменяется в пределах от 0 до Х. Результат в этом случае имеет тип Word (от 0 до 65535). Если параметр Х не задан, результат будет типа Real в пределах от 0.0 до 1.0.
ЗАДАЧА 1 • Сформировать одномерный массив из N элементов, где элементы массива – целые случайные числа в пределах от 1 до 45. Напечатать элементы массива в прямом и обратном порядке.
Program prim1; Uses crt; Var i, n: integer; a: array [1..1000] of integer; Begin clrscr; randomize; write (‘wwesti n’); readln (n); for i: =1 to n do begin a [i]:= random (45) +1; write (a [i], ‘ ‘); end; for i: = n downto 1 do write (a [i], ‘ ‘); readkey; End.
ЗАДАЧА 2 • В предыдущей задаче переставить элементы, стоящие на нечетных местах, с соответствующими элементами на четных местах.
Program prim2; Uses crt; Var i, n,r: integer; a: array [1..1000] of integer; Begin clrscr; randomize; write (‘wwesti n’); readln (n); for i: =1 to n do begin a [i]:= random (45) +1; write (a [i], ‘ ‘); end; i:=1; {В полученном массиве меняем соседние элементы} while i<=n-1 do {Покаi<=n-1} begin r:=a[i]; a[i]:=a[i+1]; a[i+1]:=r; {Меняем знач-ия соседних эл-тов с пом. «кармана»} inc (i,2) {Увеличиваем индекс на два} end; for i:=1 to n do {Распечатываем измененный массив} write (a [i], ‘ ‘); readkey End.
Примечание: • Процедура inc (i, n) преобразует переменную порядкового типа i к последующему значению (при n=1) или на n шагов вперед.
ЗАДАЧА 3 • Найти максимальный (минимальный) элемент массива, а также его порядковый номер.
За начальный максимум берем первый элемент массива. max:=a[1]; for i:=1 to n do begin Если найдется элемент, больший max, то max будет равен этому элементу. Одновременно запоминаем индекс промежуточного максимума. if a[i]>=max then begin max:=a[i]; imax:=i; end; Печатаем максимальный элемент и его индекс. writeln (max, ‘номер’, imax); readkey; end.
ЗАДАЧА 4 • Найти максимальный элемент среди отрицательных чисел и минимальный элемент среди неотрицательных.
ЗАДАЧА 5 • Подсчитать количество четных элементов массива, заданного датчиком случайных чисел.
Program prim5; uses crt; var i, k, n, r: integer; a: array [1..10000] of integer; begin clrscr; randomize; write (‘chislo elementow =‘); readln (n); for i:=1 to n do begin a[i]:=random(45)-22; write (a[i],’ ‘); {Проверяем на четность и считаем кол-во четных элементов} if a[i]mod2=0 then inc(k,1); end; write (‘k=‘, k); readkey end.
ЗАДАЧА 6 (самостоятельно) • Подсчитать количество отрицательных и неотрицательных элементов массива, заданного датчиком случайных чисел.
ЗАДАЧА 7 • Произвести удаление элемента из одномерного массива, заданного датчиком случайных чисел.
{Смещаем элементы массива к началу, начиная с k-го} if i>=k then a[i]:=a[i+1]; end; {Обнуляем последний элемент} a[n]:=0; {Выводим на экран измененный массив} for i:=1 to n-1 do begin write (a[i], ‘ ‘); end; readln; end. Program prim7; uses crt; var a: array [1..1000] of integer; i, k, n: integer; begin randomize; clrscr; write (‘chislo elementow =‘); readln (n); for i:=1 to n do begin a[i]:=random(45)-22; write (a[i], ‘ ‘); end; {Вводим номер удаляемого элемента} write (‘nomer udal.elem. k=<n’); readln (k); for i:=1 to n-1 do begin
ЗАДАЧА 8 • Произвести вставку элемента в одномерный массив, заданный датчиком случайных чисел.
{Смещаем элементы к концу массива, начиная с К+1} for i:=n+1 downto 1 do begin if i>k then a[i]:=a[i-1]; end; {На К-ое место ставим введенный элемент} a[k]:=r; {Выводим на экран измененный массив} for i:=1 to n+1 do begin write (a[i], ‘ ‘); end; readln; end. Program prim8; uses crt; var a: array [1..1000] of integer; r, i, k, n: integer; begin randomize; clrscr; {Создаем массив и выводим на экран} write (‘chislo eleventov n=’); readln (n); for i:=1 to n do begin a[i]:=random(45)-22; write(a[i], ‘ ‘); end; {Вводим индекс и значение вставляемого элемента} write (index <=N’); readln (k); write (‘znachenije R=‘); readln (r);