Переставить элементы массива так, чтобы располагались все нули, затем все единицы, и, наконец, все двойки - Turbo Pascal
Формулировка задачи:
Помогите пожалуйста решить задачу: В массиве х(12) каждый элемент равен 0, 1 или 2. Переставить элементы массива так, чтобы располагались все нули, затем все единицы, и, наконец, все двойки.
Решение задачи: «Переставить элементы массива так, чтобы располагались все нули, затем все единицы, и, наконец, все двойки»
textual
Листинг программы
Var x: Array [1..12] of Byte; i,j,tmp: Byte; BEGIN Randomize; Writeln('Исходный массив:'); For i:=1 to 12 do begin x[i]:=Random(3); Write(x[i],' '); end; For i:=1 to 11 do begin For j:=i+1 to 12 do If x[i]>x[j] Then begin tmp:=x[i]; x[i]:=x[j]; x[j]:=tmp end; end; Writeln; Writeln('Полученный массив:'); For i:=1 to 12 do Write(x[i],' '); Readln END.
Объяснение кода листинга программы
В данном коде происходит следующее:
- Создается переменная
x
, которая представляет собой массив из 12 элементов типаByte
. - Задаются три переменные:
i
,j
иtmp
, которые будут использоваться для перемещения элементов массива. - Выполняется цикл
For i:=1 to 12 do
, который проходит по всем элементам массиваx
. - Внутри цикла задается значение каждого элемента массива
x[i]
с помощью оператора присваиванияx[i]:=Random(3)
, гдеRandom(3)
генерирует случайное число от 0 до 2. - Выводится значение каждого элемента массива
x[i]
с помощью функцииWrite(x[i],' ')
. - Если значение элемента
x[i]
больше значения элементаx[j]
(гдеj
назначается какi+1
), то выполняется блок кодаIf x[i]>x[j] Then
, гдеtmp
присваивается значениеx[i]
, аx[i]
иx[j]
меняются местами с помощью оператора присваиванияx[i]:=x[j]
иx[j]:=tmp
. - Цикл
For i:=1 to 11 do
выполняется 11 раз, каждый раз проходя по всем элементам массиваx
. - Внутри цикла выполняется вложенный цикл
For j:=i+1 to 12 do
, который проходит по всем элементам массиваx
, начиная с элементаx[i]
и заканчивая элементомx[12]
. - Если значение элемента
x[i]
больше значения элементаx[j]
(гдеj
назначается какi+1
), то выполняется блок кодаIf x[i]>x[j] Then
, гдеtmp
присваивается значениеx[i]
, аx[i]
иx[j]
меняются местами с помощью оператора присваиванияx[i]:=x[j]
иx[j]:=tmp
. - После выполнения всех итераций циклов выводится сообщение
Writeln('Полученный массив:');
и выводится значение каждого элемента массиваx[i]
с помощью функцииWrite(x[i],' ')
. - Выполняется блок кода
Readln
, который считывает ввод пользователя и завершает выполнение программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д