Система программирования Турбо паскаль 7.0

Одномерные массивы


В математике одномерному массиву соответствует

мерный вектор, например:

                            

 , где

компонента (координата) вектора;

номер компоненты;

число компонент.

                 Описание одномерного массива

В Турбо Паскале описание одномерного массива задается следующим образом:

<имя массива>: ARRAY [m1 ¼m2] OF < тип элементов>;

Индекс одномерного массива определяет порядковый номер элемента в массиве.

m1 ¼m2 – диапазон значений индекса.

Тип элементов в массиве может быть любым: простым (REAL, INTEGER, CHAR), структурным (ARRAY), строковым (STRING).

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

               Var



                   X: array [1¼5] of real;

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

                           Индексные переменные

Выбор отдельного элемента из массива осуществляется с помощью индексной переменной, которая задается следующим образом:

индексная переменная (элемент массива);

имя массива;

индекс (номер элемента массива).

В качестве индекса используются:

  • целые константы, например,
    ;
  • целые переменные, например,
    ;
  • индексные выражения, например,
    .
  • Замечание. Индексными выражениями являются арифметические выражения целого типа.

     Индексная переменная, как и простая, может стаять в левой части оператора присваивания, например:

    ;

                     Ввод-вывод одномерных массивов

    Ввод-вывод массивов осуществляются поэлементно с помощью оператора цикла FOR, в котором в качестве параметра используется индекс.

    Пример 1.

    Организовать ввод с клавиатуры массива:

    .

    В разделе описания переменных необходимо задать описание массива и индекса.

                    Var

                        A: array [1¼4] of real;

                         i: integer;

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


                   Begin {начало программы}
                        writeln(‘Введите массив А’);
                        for i := 1 to 4 read(a[i]);
                  ……………
    На клавиатуре набирается:
                        1.2  5  6.8  14 < Enter >.
    Пример 2.
    Организовать вывод массива А на экран таким образом, чтобы все элементы располагались на одной строке экрана.
       В программе надо записать следующие операторы:
                        for i := 1 to 4 do write(a[i]:5:1);
                        writeln;
    Вид выводимого массива на экране:
                        1.2    5.0   -6.8  14.0
    Оператор WRITELN без списка служит для перевода курсора к началу следующей строки.
                     Обработка одномерных массивов
    При решении задач обработки массивов используют базовые алгоритмы реализации циклических вычислительных процессов: организация счетчика, накопление сумм и произведений, поиск минимального и максимального элементов массива.
    Задача 1. Организация счетчика.
    Определить количество элементов заданного целочисленного массива
    , которые делятся на 3 без остатка.
                         Program OM_1;
                         Var   
                             B: array [1… 20] of integer;
                              i, L: integer;
                         Begin
                        writeln(‘Введите массив В’);
                        for i :=1 to 20 do read(b[i]);
                        L := 0;
                        for i :=1 to 20 do
                            if  (b[i] MOD 3) = 0 then L := L+1;
                        writeln(‘L =’, L);
                         End.
       Задача 2. Накопление суммы и произведения.
              Дано целое число
     и массив вещественных чисел
    . Вычислить среднее арифметическое и среднее геометрическое чисел массива, используя формулы:
                     
    ;  
    .
                  Program ОМ_2;
                  Var
                      Х: array [1… 100] of real;
                      n, i: integer;
                      S, P: real;
                  Begin
                 writeln(‘Введите размер массива n’);


                 read(n);
                 writeln(‘Введите массив Х’);
                 for i := 1 to n do read(x[i]);
                 S := 0;
                 P := 1;
                 for i := 1 to n do
                             begin
                                S := S + x[i];
                                P := P * x[i];
               end;
           S := S/n;
           P := exp(1/n * ln(P));
                   writeln(‘S =’, S:6:2);
                       writeln(‘P =’, P:10:2);
                   End.
          Задача 3. Поиск минимального и максимального элементов массива.
    Дан вещественный массив
    .
    Поменять местами минимальный и максимальный элементы массива и вывести массив после обмена.
    В этой задаче дополнительно надо знать местоположение минимального и максимального элементов, поэтому одновременно с поиском надо запоминать  индексы.
    Введем обозначения:
    min – минимальный элемент;
    imin – индекс минимального элемента;
    max – максимальный элемент;
    imax – индекс максимального элемента.
                          Program ОМ_3;
                          Var
                              T: array [1… 10] of real;
                               i, imin, imax: integer;
                               min, max: real;
                          Begin
                         writeln(‘Введите массив T’);
                         for i := 1 to 10 do read(t[i]);
                         min := +1E6;
                         max := -1E6;
                         for i := 1 to 10 do
                              begin
                             if t[i]<min then
                                begin
                       min := t[i];
                       imin := i;
                        end;
                             if t[i]>max then
                        begin
                            max := t[i];
                            imax := i;
                        end;
                              end;
                          t[imin]:= max;
                          t[imax]:= min;
                          for i := 1 to 10 do write(t[i]:6:2);
                          writeln;
                          End.

    Содержание раздела