Версия для печати

Работа с несколькими массивами

Оцените материал
(0 голосов)

Работа с несколькими массивами

Принципы решения

В ряде задач для временного хранения элементов исходного массива можно (или необходимо) использовать другой массив, что делает алгоритмы решения более наглядными и простыми. Например, в процессе поиска по заданным критериям элементы первого массива (A) сохраняются во втором массиве (B). Обычно речь идет о втором массиве того же размера. В данной задаче во второй массив помещаются элементы исходного массива с четными номерами:

      {некий код программы}
      for i := 1 to n div 2 do
          b[i] := a[i * 2];
      {продолжение программы}

Примечание:

  1. Второй массив необходим, если нужно знать индексы (значения эл-тов) всех эл-тов, имеющих заданное значение.
  2. В том случае, если, в процессе поиска, искомые индексы (или значения эл-ов) выводятся на экран непосредственно в цикле for, необходимость во втором массиве отпадает.

Примеры решения задач

  1. Постановка задачи. Дан массив A размера N. Записать в массив B того же размера элементы массива A в обратном порядке. Вывести вначале элементы преобразованного массива A, а затем — элементы преобразованного массива B.
1.                                                    program massab1;
2.                                                    const
3.                                                        n = 50;
4.                                                    var
5.                                                        a,b:array[1..n] of integer;
6.                                                        i:byte;
7.                                                    begin
8.                                                    randomize;
9.                                                    for i := 1 to n do
10.                                                begin
11.                                                    a[i] := random(90) + 10; {заполняем элементы}
12.                                                    write(a[i]:4) {выводим массив A}
13.                                                end;
14.                                                writeln; {переходим на новую строку для вывода массива B}
15.                                                for i := 1 to n do
16.                                                begin
17.                                                    b[i] := a[n - i + 1]; {заполняем по условию}
18.                                                    write(b[i]:4) {выводим массив B}
19.                                                end;
20.                                                readln
21.                                                end.
  1. Постановка задачи. Дан массив A размера N. Сформировать новый массив B того же размера, элементы которого определяются следующим образом:
                       |2·AK, если AK < 5,
                 BK = -|     
                       |AK/2 в противном случае.
1.                program massab2;
2.                const
3.                    n = 50;
4.                var
5.                    a,b:array[1..n] of real;
6.                    i:byte;
7.                begin
8.                for i := 1 to n do
9.                begin
10.                a[i] := random(90) + 10;
11.                if a[i] < 5 then
12.                    b[i] := a[i] * 2
13.                else
14.                    b[i] := a[i] / 2;
15.                write(a[i]:4:1) {выводим массив А, хотя в условии не требуется}
16.            end;
17.            writeln;
18.            for i := 1 to n do
19.                write(b[i]:4:1); {выводим массив B}
20.            readln 
21.            end.
  1. Постановка задачи. Дан массив A размера N. Сформировать новый массив B того же размера по следующему правилу: элемент BK равен сумме элементов массива A с номерами от 1 до K.
1.                program massab3;
2.                const
3.                    n = 10; {Объявим исходный массив как типизированную константу:}
4.                    a:array[1..n] of word = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
5.                var
6.                    b:array[1..n] of word;
7.                    i:byte;
8.                    sum:word;
9.                begin
10.            for i := 1 to n do
11.                write(a[i]:4); {покажем массив А}
12.            writeln;
13.            sum := 0; {подготавливаем накопитель суммы эл-тов от 1 до K}
14.            for i := 1 to n do
15.            begin
16.                sum := sum + a[i];
17.                b[i] := sum; {реализация задачи}
18.                write(b[i]:4)
19.            end;
20.            readln
21.            end.
  1. Постановка задачи. Дан массив A размера N. Сформировать новый массив B того же размера по следующему правилу: элемент BK равен среднему арифметическому элементов массива A с номерами от K до N.
1.                program massab4;
2.                const
3.                    n = 10; {Объявим исходный массив как типизированную константу:}
4.                    a:array[1..n] of word = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
5.                var
6.                    b:array[1..n] of real;
7.                    i,j,s:byte;
8.                begin
9.                for i := 1 to n do
10.                write(a[i]:4); {покажем массив А}
11.            writeln;
12.            for i := 1 to n do
13.            begin
14.                s := 0; {Перед входом во вложенный цикл "обнуляем" накопитель}
15.                for j := i to n do {Во вложенном цикле суммируем элементы массива А от К-го до N}
16.                    s := s + a[j];
17.                b[i] := s/(n - i + 1); {по выходу из цикла получаем среднее арифметическое с присваиванием текущему эл-ту массива В}
18.                write(b[i]:4:1)
19.            end;
20.            readln
21.   end
Прочитано 9736 раз