Урок 15 Задача 12

Урок 15 Задача 12:

Пусть есть процедура, которая умеет сдвигать массив влево на 1 элемент, начиная с указанного символа (устанавливая последний элемент равным нулю):
type newArr = array [1..5] of integer;
  

procedure shiftArr(var promArr: newArr; k:integer);
var j:integer;
begin
  for j:=k to 4 do
    promArr[j]:=promArr[j+1];
  promArr[high(promArr)]:=0;
end;

Задача: У вас есть исходный массив случайных целых чисел из 5 элементов. Пользователь вводит три числа целых числа, сохраните их во второй массив и затем проведите сдвиг элементов исходного массива, для каждого случая их совпадения с элементами из второго массива, для сдвига используйте процедуру shiftArr().

type newArr = array [1..5] of integer;               // --- дано по условию задачи
var m: newArr;                               // основной массив
  n: array[1..3] of integer;                 // массив для ввода трех чисел
  i, h: integer;                             // счетчики

procedure shiftArr(var promArr: newArr; k: integer); // --- дано по условию задачи
var j:integer;                                       // --- дано по условию задачи
begin                                                // --- дано по условию задачи
  for j:=k to 4 do                                   // --- дано по условию задачи
    promArr[j]:=promArr[j+1];                        // --- дано по условию задачи
  promArr[high(promArr)]:=0;                         // --- дано по условию задачи
end;                                                 // --- дано по условию задачи

begin
  write ('Исходный массив: ');
  randomize();
  for i:= low(m) to high(m) do      // обходим осн. массив для присваив-я случайных значений
  begin
    m[i] := random(9) + 1;
    write (m[i], ' ');
  end;
  writeln ();
  writeln ('Числа пользователя:');
  for h:= low(n) to high(n) do      // обходим массив для ввода трех значений
    readln (n[h]);
  for h:= low(n) to high(n) do      // внешний цикл, массив из трех введенных значений
    for i:= low(m) to high(m) do    // вложенный цикл, основной массив
      while n[h] = m[i] do          // еще вложенный цикл, работает, пока эл-ты массивов равны
        shiftArr (m, i);            // передаем в процедуру осн. массив и номер эл-та осн. массива
  write ('Ответ: ');
  for i:= low(m) to high(m) do      // обходим смещенный осн. массив
    write (m[i], ' ');              // выводим элементы на экран
  readln ();
end.

Вывод в консоли:

Исходный массив: 3 9 8 9 4 
Числа пользователя:
3
8
4
Ответ: 9 9 0 0 0 
Исходный массив: 6 3 2 1 1 
Числа пользователя:
5
7
1
Ответ: 6 3 2 0 0 
vedro-compota's picture

засчитано

_____________
матфак вгу и остальная классика =)