Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Билеты 16-30.docx
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
31 Кб
Скачать
☆

22 Вопрос

массив — это структурированная совокупность ячеек памяти, хранящих элементы данных под единым общим именем. В PHP массивы представляют собой довольно гибкий и многоцелевой тип данных, так как они могут содержать в качестве элементов любой другой тип, существующий в PHP, в том числе другие массивы. Если переменная в один момент времени содержит только одно значение, то массив может содержать одновременно несколько значений — элементов. Каждый элемент массива строго идентифицируется по индексу, иначе называемому ключом. Индекс (ключ) — это номер или уникальный идентификатор элемента, записанный в квадратных скобках после имени массива. Таким образом, массив всегда состоит из одной или нескольких пар "ключ-значение".

Простейшим примером массива может служить обыкновенное слово. В языке PHP все строковые данные можно представить в виде массива символов. Например, слово "массив" состоит из шести элементов. К любому из элементов можно обратиться, указав его индекс. В языке PHP, как и в языке С, индексация массивов начинается с нуля, поэтому самый первый элемент массива будет иметь индекс 0. Рассмотрим пример.

<?php

$my_word = "массив";

echo $my_word[ 0 ] ;

//выведет на экран букву м

//в этом примере индекс (ключ) элемента = 0, значение = "м"

?>

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

23,24 И 25 вопрос

Наиболее простые примеры работы с одномерными массивами приведены в нижеследующей таблице.

1. Написать оператор, который описывает массив numиз 10 вещественных элементов, индекс первого элемента равен 2. var num: array[2..12] of real;

2. Написать оператор, который вводит с клавиатуры одномерный массив В из 30 элементов, начиная с нулевого. for i:=0 to 29 do

read(B[i]);

3. Написать оператор, который выводит на экран в столбик номера и значения элементов одномерного массива mas из 30 элементов. for i:=1 to 30 do

writeln(i, ' ',mas[i]);

4. Написать оператор, который выводит на экран ненулевые элементы одномерного массива mas из 20 элементов. for i:=1 to 20 do

if mas[i]<>0 then

writeln(mas[i]);

5. Сдвинуть все элементы массива a[1..n] вправо на 1 позицию t:=a[n];

for i:=n-1 downto 1 do

a[i+1]:=a[i];

a[1]:=t;

6. Получить инвертированный одномерный массив (с использованием вспомогательного массива) program invert_massiv;

const n=7;

Var a,b:array[1..n] of integer; i: integer;

begin

Randomize;

for i:=1 to n do

a[i]:=random(11);

writeln('Исходный массив');

for i:=1 to n do

write(a[i]:3, ' ');

for i:=0 to n-1 do

b[i+1]:=a[n-i];

writeln;

writeln('Инвертированный массив');

for i:=1 to n do

write(b[i]:3, ' ');

end.

7. Та же задача, но с использованием одного массива и вспомогательной переменной t for i:=1 to n div 2 do

begin

t:=a[i];

a[i]:=a[n-i+1];

a[n-i+1]:=t;

end;

26, 27 И 28 вопрос

Обычно двумерные массивы на языке программирования Pascal описываются так:

array [1..m, 1..n] of базовый_тип

Однако можно их описывать и по-другому:

array [1..m] of array [1..n] of базовый_тип

При этом описание может быть в разделе type и тогда создается новый тип, который можно использовать при объявлении переменных. Или массив может быть описан непосредственно в разделе переменных. m и n – это константы, их можно опустить и вставить конкретные значения, но лучше так не делать. Обычно подразумевают, что в интервале от 1 до m определяется количество строк, а в интервале от 1 до n – количество столбцов массива.

1 вариант – описание массива через раздел type:

const

M = 10;

N = 5;

type

matrix = array [1..M, 1..N] of integer;

var

a: matrix;

2 вариант – описание массива в разделе переменных:

const

M = 10;

N = 5;

var

a: array [1..M, 1..N] of integer;

При использовании третьего варианта описания лучше сначала определить некоторый тип одномерного массива (строка двухмерного массива), который затем используется при описании двухмерного массива:

type a = array[1..10] of byte;

var b: array[1..100] of a;

Для обращения к элементу двухмерного массива необходимо указать имя массива и в квадратных скобках через запятую – значения двух индексов (первый указывает номер строки, а второй – номер столбца), на пересечение которых стоит элемент (например, a[i,2]:=6). В языке программирования Pascal допустимо разделение индексов с помощью квадратных скобок (например, a[i][5]:= 7).

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

type

arr = array[1..4, 1..3] of integer;

const

cords: arr = ((1,-1,3), (0,0,0), (1,4,0), (4,-1,-1));

Рассмотрим простой пример работы с двумерным массивом. Сначала заполним его данными, а затем выведем их на экран в виде таблицы.

var

matrix: array[1..3,1..5] of integer;

i, j: integer;

begin

writeln ('Введите 15 чисел: ');

for i := 1 to 3 do

for j := 1 to 5 do

read (matrix[i,j]);

for i := 1 to 3 do begin

for j := 1 to 5 do

write (matrix[i,j], ' ');

writeln

end;

readln

end.

Размерность массива (т.е. количество содержащихся в нем значений) определяется произведением количества строк на количество столбцов. В примере выше в массив помещается 15 значений.

Когда пользователь вводит очередное число, то процедура read считывает его и помещает в ячейку с текущими индексами i и j. Когда i равна единице, значение j меняется пять раз, и, значит, заполняется первая строка таблицы. Когда i равна двум, значение j снова меняется пять раз и заполняется вторая строка таблицы. Аналогично заполняется третья строка таблицы. Внутренний цикл for в общей сложности совершает 15 итераций, внешний только 3.

Как пользователь вводит значения – не важно. Он может их разделять либо пробелом, либо переходом на новую строку.

Вывод значений двумерного массива организован в виде таблицы. Выводятся 3 строки по 5 чисел в каждой. Внутри строк числа разделяются пробелом.

На самом деле, это не совсем корректно написанная программа. Мы несколько раз используем цифры 3 и 5. А что если мы захотим поменять размерность массива? Придется просмотреть всю программу (представьте, что она очень большая) и исправить значения. Это неэффективно. Поэтому в программе следует использовать константы. В случае чего их значения можно поменять всего лишь в одном месте.

Вторая проблема – это «кривость» выводимой на экран таблицы значений матрицы, в случае если есть значения разной разрядности (однозначное, двузначное и т.д. числа). Неплохо бы под каждое число отводить равное количество знаков.

Вот так может выглядеть подправленный вариант программы:

const

M = 3;

N = 5;

var

matrix: array[1..M,1..N] of integer;

i, j: integer;

begin

writeln ('Введите 15 чисел: ');

for i := 1 to M do

for j := 1 to N do

read (matrix[i,j]);

for i := 1 to M do begin

for j := 1 to N do

write (matrix[i,j]:5);

writeln

end;

readln

end.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]