В следующем примере массив описывается в новом разделе — разделе описания типов пользователя (type). Вы можете по-прежнему пользоваться описанием массива в разделе описания переменных (как в примере 8.1).
Вариант описания массива, приведенный в этом примере, в большей степени соответствует грамотному стилю оформления программы.
Пример 8.2. Ввод с клавиатуры одномерного массива целых чисел и вывод его элементов на экран с противоположным знаком
Program Massiv2; const N=10; type { Раздел описания типов переменных. Эти типы определяет сам пользователь, то есть мы определяем тип одномерного массива из n целых чисел } Mas=array [1..N] of integer; { 1...N - тип индекса; для индекса выбран интервальный тип, то есть интервал целых чисел от 1 до N, где N определено в разделе const } var Line:Mas; { Line - одномерный массив, его тип определен нами как Mas } i:integer; { Переменная, хранящая индекс элемента массива, к которому идет обращение ,} begin {IV. Ввод массива с клавиатуры } for i:=l to N do { Обращение к элементам массива происходит в цикле, по очереди } begin { Начало цикла ввода элементов массива } write ( 'Введите элемент с индексом ' ,i ,':'); readln(Line[i]) { Обращаемся к i-му элементу массива (Line[l],Line[2] и т. д.) } end; { Конец цикла ввода элементов массива} { Вывод элементов происходит также в цикле;} for i:=l to N do { Перебираем все N элементов массива } write(-Line[i]:5); { 10 элементов выводятся в строку. Выводим все элементы массива с противоположным знаком } writeln; { После вывода массива элементов - переход на новую строку } readln end.
Заметьте, в задании не требовалось, чтобы знак всех элементов массива менялся на противоположный. Требовалось лишь вывести их в таком виде на экран. Если бы требовалось изменить сам массив, обязательно нужно было бы сделать примерно следующее:
For i:=1 to N do Line[i]:=-Line[i];
Очень важно понимать: то, что мы видим на экране, не всегда есть то, что действительно хранится в памяти. Программист может играть здесь роль фокусника. Важно лишь, чтобы задание было точно выполнено.
То есть если в задании требуется изменить каким-либо образом данные и вывести результат на экран, а программист просто вывел данные на экран в нужном виде, то такое задание не может считаться выполненным.
Например, в задании требуется поставить все элементы массива в обратном порядке и вывести результат на экран. Программист решил, что проще всего будет просто вывести на экран все элементы, начиная с последнего. Такое решение не засчитывается!
Задание 8.3. Выполнить следующие действия:
1) создать одномерный массив А из 10 целых чисел (с помощью датчика случайных чисел); 2) вывести массив на экран в виде строки чисел; 3) подсчитать сумму элементов массива (блок-схема алгоритма показана на рис. 8.3); 4) вывести сумму на экран.
Рис. 8.3. Блок-схема алгоритма вычисления суммы элементов одномерного массива
Задание 8.4. Выполнить следующие действия:
1) создать одномерный массив А из 10 целых чисел; 2) вывести массив на экран в виде строки чисел; 3) поменять местами элементы массива (блок-схема алгоритма показана на рис. 8.4) следующим образом: 1-й элемент — со 2-м, 3-й — с 4-м, 5-й — с 6-м, 7-й — с 8-м, 9-й — с 10-м; (надо вспомнить, как идет обмен значениями двух переменных (рис. 2.4)); 4) вывести измененный массив на экран.
Рис. 8.4. Блок-схема алгоритма обмена соседних элементов одномерного массива