5. Для задачи из примера 7.4 выполните перечисленные задания.

1.  Заполните таблицу.
2.  Добавьте в таблицу свои значения n, a, x, k.

n a x k Преобразованный массив
1 3 –2 –3 –5 0 2 -2 0 -3 -5
2 5 1 2 3 4 5 0 1 0 1 2 3 4 5
3 10 1 –3 –2 0 4 0 2 –4 0 2 10 11 1 -3 -2 0 4 0 2 -4 0 2 10
4 5 9 6 8 3 5 3 7 9 6 8 3 5 0
5 5 -1 4 2 -8 6 4 9 -1 4 2 -8 6 0

3. Какой результат выдаст программа, если ввести n = 5, а k = 120? Вставьте в программу проверку для числа k (1 < k ≤ n + 1).

Если ввести n = 5, а k = 120, программа завершится с ошибкой, поскольку всего элементов в массие 5, а программа пытается получить доступ к элементу массива с номером 120, которого не существует.

Программа с проверкой (1 < k ≤ n + 1):

var a: array[1..20] of integer;
 n, k, x: integer;
begin
 write('Количество n =');
 readln(n);
 writeln('Элементы массива');
 for var i := 1 to n do
  read(a[i]);
 write('Число x =');
 readln(x);
 write('Номер позиции k =');
 readln(k);
 if (1 < k) and (k <= n + 1) then
 begin
   //сдвиг элементов вправо на 1
   for var i:= n downto k do
    a[i+1] := a[i];
   //вставка x на место k
   a[k] := x;
   n := n + 1;
   writeln('Преобразованный массив');
   for var i := 1 to n do
    write(a[i], ' ');
 end
 else
  writeln('Неверное число k')
end.

4.  Какой результат получим, если заменить цикл из п. 4.1 циклом из п. 4.2?

Если заменить цикл из п. 4.1 циклом из п. 4.2, программа будет выдавать неверный результат. Массив будет обходится слева направо, присваивая следующему элементу текущий, на второй итерации цикла второй элемент будет равен первому — и программа снова присовит следующему элементу текущий элемент, который равен первому. Таким образом массив будет содержать неверные числа.

Другие задания