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

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

Задача
  1. Напишите программу. В одномерном массиве $$A[1..N]$$ содержится большое количество 0. Переформируйте массив так, чтобы сначала шли элементы, отличные от 0, а затем — нулевые. Запишите текст программы.
Подробный ответ

Нужно пройти по массиву один раз и сдвигать все ненулевые элементы в начало. Для этого удобно хранить номер позиции, куда должен попасть следующий ненулевой элемент, в переменной $$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
Другие учебники
Другие предметы