Скачиваний:
18
Добавлен:
01.05.2014
Размер:
20.04 Кб
Скачать

Turbo Pascal | Глава 6 a:link {TEXT-DECORATION: none} a:visited {TEXT-DECORATION: none} a:active {TEXT-DECORATION: none} a:hover {COLOR: #007EFF;} A.menu:link { Color:#FFFFFF; } A.menu:visited { Color:#EEEEEE; } A.menu:hover { Color:#CCDDFF; } .glow { FILTER: DropShadow(Color=#000000, OffX=1, OffY=1, Positive=1)FILTER: Glow(Strength=1, Color=#454545); } .logot { color:#FFFFFF; }  

В в е д е н и е  /  О г л а в л е н и е  /  О т   а в т о р а

М е н ю

1. Интегрированная среда разработки программ Turbo Pascal 7.0 2. Лексические основы языка Pascal 3. Программирование алгоритмов линейной структуры 4. Алгоритмы и программы ветвящейся структуры 5. Алгоритмы и программы циклической структуры 6. Регулярные типы данных. Массивы 6.1 Понятие регулярного типа

6.2 Работа с массивами

6.2.1 Инициализация элементов массива

6.2.2 Нахождение суммы и произведения массива 6.3 Алгоритмы сортировки массивов

6.3.1 Постановка задачи сортировки и методы её решения

6.3.2 Алгоритмы и программы сортировки

6.3.2.1 Алгоритм сортировки обменами ("пузырьковая" сортировка)

6.3.2.2 Алгоритм сортировки вставками

6.3.2.3 Алгоритм сортировки выбором элемента

6.3.2.4 Алгоритм быстрой сортировки (метод Хоора)

6.3.2.5 Алгоритм пирамиды (метод Уильямса-Флойда) 7. Подпрограммы в Turbo Pascal

Работа с массивами

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

Инициализация элементов массива

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

      Для ввода или вывода массива в список ввода или вывода помещается переменная с индексом, а операторы ввода или вывода выполняются в цикле, изменяя при каждой итерации значение индекса.

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

      type Mass= Array[1..10] of Real;

      const

      K: Mass= ( 0, 2.1, 4, 5.65, 6.1, 6.7, 7.2, 8, 8.7, 9.3 );

      При инициализации двумерных массивов значения компонент каждого из входящих в него одномерных массивов записывается в скобках:

         type Mass3x2= Array[1..3,1..2] of Integer;

       const

       L: Mass3x2= ( (1, 2)

         (3, 4)

         (5, 6) );

      Второй способ инициализации - использование разновидности процедуры FillChar:

      FillChar( var V; NBytes: Word; B: {Byte|Char} );

      Эта процедура заполняет участок памяти однобайтовым значением. Например, для обнуления массива A[1..10] of Real можно записать:

      FillChar(A, 40, 0); или FillChar(A, SizeOf(A), 0);

      Пример 6.1 Ввод элементов одномерного массива с клавиатуры

      A:array [1..10] of Integer.

      For i:=1 to 10 do

      begin

         Write('Введите A[', i,']');

         Read(A[i])

      end;

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

      Randomize;

      For i:=1 to 10 do

          A[i]:=Random(100);

      Процедура Randomize инициализирует встроенный генератор случайных чисел. Функция Random(100) возвращает при каждой итерации случайное число в диапазоне от 0 до значения заданного аргументом (100-1).

      Пример 6.2 Ввод элементов двумерного массива

      B:array [1..20,1..20] of Real.

      For i:=1 to 20 do

      For i:=1 to 20 do

      begin

      Write('Введите B[', i,']');

         Read(B[i])

         end;

      Аналогично показанному выше, можно использовать генератор случайных чисел.

Нахождение суммы и произведения массива

      Необходимо найти сумму элементов одномерного массива состоящего из 20 элементов действительного типа.

      Пример 6.3. Составим алгоритм и программу нахождения суммы элементов одномерного массива.

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

      Program Example_6_1;

      var

         A:array [1..20] of Real;

         S: Real;

         I:Integer;

      Begin

         S:=0;

         For I:=1 to 20 do

         begin

         Write('Введите A[', I,']');

         Read(A[I]);

         S:=S+A[I]

      end;

      WriteLn ('Результат суммирования... ',S)

      End.

      Найти сумму отрицательных элементов одномерного массива состоящего из 100 элементов целого типа, порядковый номер которых кратен трём.

      Пример 6.4. Составим алгоритм и программу нахождения суммы элементов одномерного массива.

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

      Ниже приведена блок-схема алгоритма и программа решения задачи.

Program Example_6_2;

var

A:array [1..100] of Integer;

S,I:Integer;

Begin

Randomize;

S:=0;

For I:=1 to 100 do

begin

A[I]:=Random(100) - Random(50);

f (I mod 3=0) and (A[I]<0) then S:=S+A[I]

end;

WriteLn ('Результат суммирования... ',S)

End.

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

      Найти произведение положительных элементов одномерного массива состоящего из 100 элементов целого типа.

      Пример 6.5. Составим алгоритм и программу нахождения произведения элементов одномерного массива.

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

      Ниже приведена блок-схема алгоритма и программа решения задачи.

Program Example_6_3;

Var

A:array [1..100] of Integer;

S,I:Integer;

Begin

Randomize;

P:=1;

For I:=1 to 100 do

begin

A[I]:=Random(100) - Random(50);

If A[I]>0 then P:=P*A[I]

end;

WriteLn ('Результат произведения... ',P)

End.       Дан двумерный массив, состоящий из элементов целого типа. Размерность массива 20X20. Найти сумму элементов главной и произведение элементов побочной диагоналей.

      Пример 6.6. Для определения элемента, лежащего на главной диагонали, вспомним, что у него номер строки равен номеру столбца. Элемент лежащий на побочной диагонали, может быть определён по равенству - I+J= N+1, где I, J - соответственно индексы строки и столбца, а N - порядок матрицы.

Program Example_6_4;

Var

A:array [1..20,1..20] of Integer;

S,P,I,J:Integer;

Begin

Randomize;

P:=1; S:=0;

For I:=1 to 20 do

For J:=1 to 20 do

begin

A[I, J]:=Random(100) - Random(50);

If I=J then S:=S+A[I, J];

If I+J=20 then P:=P*A[I, J];

end;

WriteLn ('Результат произведения... ',P);

WriteLn ('Результат суммы... ',S)

End.

Учебно-познавательный сайт по программированию в среде Turbo Pascal

Мирошниченко Марина, Краснодар, 2003

 

Соседние файлы в папке Pascal