Совет Как

Помогите решить простые (но не для меня) задачи на основе динамических переменных. (Pascal)

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

Задача №1

Даны два массива A и B из N элементов каждый. Необходимо создать новый массив C, в котором каждый элемент является суммой соответствующих элементов массивов A и B. Размер массивов A, B и C задается пользователем.

Решение

Для решения этой задачи нам нужно создать 3 динамических массива типа integer: A, B и C. Затем мы должны запросить у пользователя размер каждого массива и заполнить массивы A и B случайными числами. После этого мы пройдемся по массиву C и заполним его элементы суммой соответствующих элементов массивов A и B.

program task1;

uses
  crt;

var
  n, i: integer;
  a, b, c: array of integer;

begin
  clrscr;
  
  // запрос размера массивов
  write('Enter the size of arrays: ');
  readln(n);

  // выделение памяти под массивы
  SetLength(a, n);
  SetLength(b, n);
  SetLength(c, n);

  // заполнение массивов A и B случайными числами
  randomize;
  for i := 0 to n - 1 do
  begin
    a[i] := random(100);
    b[i] := random(100);
  end;

  // заполнение массива C суммой соответствующих элементов массивов A и B
  for i := 0 to n - 1 do
  begin
    c[i] := a[i] + b[i];
  end;

  // вывод массивов на экран
  writeln('A: ', a);
  writeln('B: ', b);
  writeln('C: ', c);

  readln;
end.

Задача №2

Дан одномерный массив A из N элементов. Необходимо создать новый массив B, в котором каждый элемент равен сумме трех предыдущих элементов массива A. Первые три элемента массива B должны быть равны соответственно A[0] + A[1] + A[2], A[1] + A[2] + A[3] и A[2] + A[3] + A[4].

Решение

Для решения этой задачи нам нужно создать два динамических массива типа integer: A и B. Затем мы должны запросить у пользователя размер массива и заполнить массив A случайными числами. После этого мы пройдемся по массиву B и заполним его элементы суммой трех предыдущих элементов массива A.

program task2;

uses
  crt;

var
  n, i: integer;
  a, b: array of integer;

begin
  clrscr;
  
  // запрос размера массива
  write('Enter the size of array: ');
  readln(n);

  // выделение памяти под массивы
  SetLength(a, n);
  SetLength(b, n);

  // заполнение массива A случайными числами
  randomize;
  for i := 0 to n - 1 do
  begin
    a[i] := random(100);
  end;

  // заполнение массива B суммой трех предыдущих элементов массива A
  for i := 0 to n - 1 do
  begin
    if i < 3 then
    begin
      b[i] := a[0] + a[1] + a[2];
    end
    else
    begin
      b[i] := a[i - 3] + a[i - 2] + a[i - 1];
    end;
  end;

  // вывод массивов на экран
  writeln('A: ', a);
  writeln('B: ', b);

  readln;
end.

Задача №3

Дан двумерный массив A размером N x M. Необходимо создать новый массив B, в котором каждый элемент равен сумме элементов соответствующей строки массива A. Размеры массивов A и B задаются пользователем.

Решение

Для решения этой задачи нам нужно создать два динамических массива типа integer: A и B. Затем мы должны запросить у пользователя размеры массивов и заполнить массив A случайными числами. После этого мы пройдемся по массиву B и заполним его элементы суммой элементов соответствующей строки массива A.

program task3;

uses
  crt;

var
  n, m, i, j: integer;
  a, b: array of array of integer;

begin
  clrscr;
  
  // запрос размеров массивов
  write('Enter the number of rows: ');
  readln(n);

  write('Enter the number of columns: ');
  readln(m);

  // выделение памяти под массивы
  SetLength(a, n, m);
  SetLength(b, n, 1);

  // заполнение массива A случайными числами
  randomize;
  for i := 0 to n - 1 do
  begin
    for j := 0 to m - 1 do
    begin
      a[i][j] := random(100);
    end;
  end;

  // заполнение массива B суммой элементов соответствующей строки массива A
  for i := 0 to n - 1 do
  begin
    for j := 0 to m - 1 do
    begin
      b[i][0] := b[i][0] + a[i][j];
    end;
  end;

  // вывод массивов на экран
  writeln('A: ');
  for i := 0 to n - 1 do
  begin
    writeln(a[i]);
  end;

  writeln('B: ');
  for i := 0 to n - 1 do
  begin
    writeln(b[i][0]);
  end;

  readln;
end.

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