Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Pascal_учебник_3.doc
Скачиваний:
33
Добавлен:
11.04.2015
Размер:
937.47 Кб
Скачать

Пример 3

Задан массив X=(0,5,-3). Получить массив Y, при этом:

y1=x1; y2=x2; y3=x3.

Решение

У нас два массива: X и Y. Оба они одномерные, состоят из трех элементов: X=(x1, x2, x3); Y=(y1, y2, y3). По размерности, количеству элементов и типу они совпадают (они вообще совпадают, даже значения элементов одни и те же). Отсюда следует, что их можно описать вместе одним описанием.

1-й вариант

Var

x,y:array [1..3] of integer;

Begin

x[1]:=0;

x[2]:=5;

x[3]:=-3;

y[1]:=x[1];

y[2]:=x[2];

y[3]:=x[3];

Writeln(y[1],y[2],y[3])

End.

А если же у нас в массивах X,Y будет, например, по 100 элементов? Что же мы будем писать 100 операторов присваивания, например, для каж­дого элемента массива Y? Конечно, нет. В этом случае надо воспользоваться оператором цикла.

Заметим закономерность для операторов, в которых вычисляются значения для элементов массива Y. Индекс в квадратных скобках у элементов массива Y и соответствующих им элементах массива X изменяется от 1 до 3. Общий вид этих вычислений получается следующий:

т.е. при i=1 будем иметь: y1= x1 и т.д.

Итак, для i, изменяющейся от 1 до 3, производить вычисления по формуле:

yi = xi.

Запишем то же на языке PASCAL:

for i:=1 to 3 do

y[i]:=x[i];

Если элементов в массивах будет не 3, а, например, 100, изменится только заголовок цикла:

for i:=1 to 100 do

и количество элементов в массивах в описании.

Давайте организуем ввод массива X с клавиатуры. Во-первых, с целью изменять значения элементов массива X (т.к. сейчас они «зашиты» в программе и, если мы захотим взять другие значения для элементов этого массива, то придется изменять их в тексте программы), а, во-вторых, опять же, нам нужно будет писать, например, 100 операторов присваивания для задания исходных дан­ных, если в массиве X будет 100 элементов.

Любой массив вводят в цикле. Введем наш массив Х:

for i:=1 to 3 do

read(x[i]);

При i=1 будет вводиться элемент x[1];

при i=2 - x[2];

при i=3 - x[3].

Вывод - аналогичен.

Итак, какая же программа у нас получается?

Так как у нас появилась новая переменная i (целого типа), ее надо описать.

2-й вариант

Var

i:integer;

x,y:array [1..3] of integer;

Begin

for i:=1 to 3 do

Read(x[i]); {ВВОД с экрана}

for i:=1 to 3 do

y[i]:=x[i];

for i:=1 to 3 do

Writeln(y[i])

{значения Y будут выведены в столбик}

End.

Итак, любой массив выводят в цикле.

Вы, наверное, уже увидели, что эти три цикла можно объединить в один, т.е. организовать цикл следующим образом: ввод первого элемента массива Х, нахождение первого элемента массива Y и сразу же вывод его значения на экран; после этого ввод следующего элемента массива X и т.д. У нас получится такой вариант программы:

3-й вариант

Var

i:integer;

x,y:array [1..3] of integer;

Begin

for i:=1 to 3 do

Так как в теле цикла надо выполнить более одного оператора, то нужно их заключить в операторные скоб­ки beginend.

begin

Read(x[i]);

y[i]:=x[i];

Writeln(y[i])

end

End.

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

4-й вариант

Type

ar = array [1..3] of integer;

Const

x : ar = (0,5,-3);

Var

i:integer;

y:ar;

Begin

y:=x; {Знач. массива X присваив. массиву Y}

for i:=1 to 3 do

Writeln(y[i])

End.

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