Пятница, 2025-06-20, 11:51 PM
Приветствую Вас Гость | RSS
Главная | Урок 5 | Регистрация | Вход
Меню сайта
Вход на сайт
Поиск
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Программирование

    Урок 5 - Обработка массива на языке pascal(одномерный, двумерный)

     

    Массивы - структурированный тип данных с элементами одного типа. Количество элементов определяет размер массива. Например, массив составляют заработные платы сотрудников подразделения предприятия, здесь число элементов равно числу сотрудников; массив образуют набор чисел, их количество равно числу элементов массива. Номер элемента массива называется его индексом. Массив может иметь не один, а большее число индексов. Число индексов называется размерностью массива, например, массив с двумя индексами называется двумерным массивом. Таким двумерным массивом является, в частности, матрица системы  n линейных алгебраических уравнений с n неизвестными. В то же время столбец свободных членов этой системы является одномерным массивом.

    Массив должен быть описан либо в разделе переменных VAR, либо в разделе типов TYPE  следующим образом:

    TYPE <имя_типа> = ARRAY [ti,t2....,tn] OF <тип_элементов_массива>;
    VAR <имя_массива>  :  <имя_типа> ;
    или
    VAR<имя_массива>: ARRAY [ti,t2,...,tn]OF<тип_элементов_массива>;
    где      tl,...,tn - тип индекса (перечислимый или интервальный);
    Например:
    1) VAR           a:  ARRAY   [1..5]   OF    real;
    Описан массив  а  действительных чисел, который состоит из 5 элементов.
    2) TYPE   t =  ARRAY[1..3,1..4] OF integer;
    VAR   b  :  t;
    Описана матрица  b из  3 строк и 4 столбцов, элементы которой являются целыми числами.
    3) TYPE
    tl  =  ARRAY  [1..4]   OF   integer;
    t =  ARRAY  [1..5]   OF    t1;
    VAR   d : t;
    к : t1;

    В начале описан тип одной строки t1, затем тип всей матрицы t через тип строки t1. В разделе переменных указано ,что d-двумерный массив размером (5,4), a k - одномерный массив k(4).

    Пример обработки одномерного массива

    Дан одномерный массив MAS(12) из вещественных чисел. Найти наибольший элемент  массива и его индекс.

    program  pr4_1 ;
    const  n = 12;  (*константа n определяет размер массива в описании*)
    type
    m  = array [1..n] of   real ;      (*  m – тип массива mas  *)
    var    mas : m ;
    i , num : integer;   
    max : real;
    begin 
    for i:=1 to n do       (*ввод элементов массива mas по 1 в строке*)
    begin
    writeln(‘введите элемент массива’, i) ;  
    read  (mas[i]);
    end;
    num :=1;  max := mas [1];
    for  i: =2 to n  do
    if  mas [ i ] > max  then     begin
    max := mas [i ]; num := i ;
    end;
    writeln;       (* вывод   массива     в строку*)
    for i:=1 to n do    write (mas [ i ]:5:1 );   writeln;  
    writeln (‘максимальный элемент = ‘, max:4:1,‘   его индекс=’ ,num );
    readln;
    end.

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

    Пример обработки многомерного массива

    Как правило, при обработке многомерных массивов используются вложенные циклы, т.е. цикл по столбцам располагается внутри цикла по строкам. 
    Дана матрица A(3,4), и вектор B (4), состоящие из целых чисел . Умножить матрицу  А на вектор В .

    program  pr4-2 ;
    const m=3;   n=4;
    var
    a  : array [ 1 .. m, 1 .. n ] of    integer; (* описание матрицы *)
    b  : array [ 1 .. n ] of   integer;                      (* описание вектора *)
    c  : array [ 1 .. m ]  of  integer;                      ( * описание  С  *)
    i,  j: integer;
    begin
    for i:=1 to m do                  (* ввод матрицы  *)
    begin 
    writeln (‘введите элементы ‘, i , ‘-той строки’);
    for j:=1 to n do read (a [i, j] ); writeln; 
    end;
    writeln (‘введите элементы вектора’);
    for j:=1 to n  do                             (* ввод  вектора *)
    read (b[ j]);   writeln;
    for i:=1 to m do
    begin
    c [ i ]:=0;        for j:=1 to n do       c[i] := c[ i ]+ a[i , j]* b[j];
    end;
    for i:=1 to m do      (*форматный вывод матрицы  *)
    begin
    for j:=1 to n do write (a [i, j]: 4 );  writeln; 
    end;
    for j:=1 to n do  write (b [ j ] :4);    (* вывод  массива B *)
    writeln ;
    for i:=1 to m do  write (c [ i ] :4);   (* вывод  массива С  *)
    readln;
    end.

    В программе элементы матрицы вводятся по строкам по одному с подтверждением клавишей Enter. А выводятся в общепринятом виде: каждая строка матрицы  с новой строки экрана (цикл i по строкам  внешний, а цикл j – внутренний).

    uCozCopyright MyCorp © 2025