1-11 класс
  • 1-11 класс
  • 1 класс
  • 2 класс
  • 3 класс
  • 4 класс
  • 5 класс
  • 6 класс
  • 7 класс
  • 8 класс
  • 9 класс
  • 10 класс
  • 11 класс
Выберите класс
Предметы
(Сам и контр)
Задание 2 Вариант 2 Самостоятельная работа 5 ГДЗ Рабочая тетрадь Босова 11 класс (Информатика)
Босова, Босова, Аквилянов
11 класс
Автор
Босова, Босова, Аквилянов

Задание 2 Вариант 2 Самостоятельная работа 5 ГДЗ Рабочая тетрадь Босова 11 класс (Информатика)

Задача

Запишите текст программы.
program s5_v2_2;
const
n = 20;
var
a: array[1..n] of integer;
i, k, c: integer;
begin
writeln(‘Ввод ‘);
//массив из 0,1,2 по желанию можно сделать любой с 0
for i := 1 to n do
a[i] := random(3);
//вывод исходного массива
for i := 1 to n do
write(a[i], ‘ ‘);
writeln;
k := 1;
for i := 1 to n do
if (a[i] < > 0) then //если встретился не 0
if(i < > k) then
begin //перестановка
c := a[i];
a[i] := a[k];
a[k] := c;
k := k + 1
end
else k := k + 1;//если i и k совпадают
writeln(‘Вывод массива’);
for i := 1 to n do
write(a[i], ‘ ‘)
end.

Подробный ответ

Нужно пройти по массиву один раз и сдвигать все ненулевые элементы в начало. Для этого удобно хранить номер позиции, куда должен попасть следующий ненулевой элемент, в переменной $$k$$.

Если текущий элемент $$a[i] \ne 0$$ и его позиция не совпадает с $$k$$, то меняем элементы местами $$a[i]$$ и $$a[k]$$. После этого увеличиваем $$k$$. Если $$i = k$$, то перестановка не нужна, но $$k$$ всё равно увеличивается.

program s5_v2_2;
const
  n = 20;
var
  a: array[1..n] of integer;
  i, k, c: integer;
begin
  writeln(‘Ввод’);
  for i := 1 to n do
    a[i] := random(3);

  for i := 1 to n do
    write(a[i], ‘ ‘);
  writeln;

  k := 1;
  for i := 1 to n do
    if a[i] <> 0 then
      if i <> k then
      begin
        c := a[i];
        a[i] := a[k];
        a[k] := c;
        k := k + 1
      end
      else k := k + 1;

  writeln(‘Вывод массива’);
  for i := 1 to n do
    write(a[i], ‘ ‘);
end.

Ответ: программа, которая переставляет элементы массива так, чтобы сначала шли все ненулевые, а затем все нули.



Общая оценка
4.8 / 5
Другие учебники
Другие предметы