Переставить элементы массива так, чтобы сначала располагались все нули, затем единицы - Pascal

Узнай цену своей работы

Формулировка задачи:

Перестановка. В массиве X[1:n] каждый элемент равен 0, 1 или 2. Переставить элементы массива так, чтобы сначала располагались все нули, затем единицы и, наконец, все двойки (дополнительного массива не заводить). 1<=n<=30. Входные данные: в первой строке записано целое число n, во второй строке последовательность чисел через пробел. Выходные данные: в единственной строке записать последовательность чисел как требует задача
Var 
x: Array of Byte; 
i,j,tmp,n: Byte; 
BEGIN 
readln(n); 
setlength(x,n); 
Writeln('Исходный массив:'); 
For i:=0 to n-1 do 
read(x[i]); 
begin 
For j:=i+1 to n-1 do 
If x[i]>x[j] Then 
begin 
tmp:=x[i]; 
x[i]:=x[j]; 
x[j]:=tmp 
end; 
end; 
Writeln; 
Writeln('Полученный массив:'); 
for i:=0 to n-1 do 
write(x[i],''); 
END.
Почти сделал, но где-то здесь ошибка, и он не меняет массив как требует сама задача
Решил.

Решение задачи: «Переставить элементы массива так, чтобы сначала располагались все нули, затем единицы»

textual
Листинг программы
var x: array of byte; 
    i,j,tmp,n: byte; 
begin 
randomize;
readln(n); 
setlength(x,n); 
writeln('Исходный массив:'); 
for i:=0 to n-1 do 
 begin
  x[i]:=random(3);
  write(x[i],' ');
 end;
writeln; 
for i:=0 to n-2 do
for j:=i+1 to n-1 do 
If x[i]>x[j] Then 
 begin 
  tmp:=x[i]; 
  x[i]:=x[j]; 
  x[j]:=tmp 
 end; 
writeln('Полученный массив:'); 
for i:=0 to n-1 do 
write(x[i],' '); 
end.

Объяснение кода листинга программы

Данный код на языке Pascal представляет собой алгоритм сортировки массива, который сначала выделяет все нули в начале массива, а затем все единицы в конце. Переменные в коде имеют следующие значения и названия:

  • x: массив байтов, который будет отсортирован.
  • i, j, tmp, n: переменные типа байт, которые используются для перемещения элементов массива.
  • randomize: инициализирует генератор случайных чисел.
  • readln(n): считывает число элементов в массиве с консоли.
  • setlength(x, n): устанавливает длину массива x равной n.
  • writeln('Исходный массив:'); выводит на экран строку Исходный массив:.
  • for i:=0 to n-1 do: цикл, который заполняет массив x случайными числами.
  • x[i]:=random(3);: присваивает i-й элемент массива x случайное число от 0 до 2.
  • write(x[i],' ');: выводит на экран i-й элемент массива x, записанный в формате x[i].
  • end;: завершает цикл.
  • for i:=0 to n-2 do: цикл, который перемещает элементы массива x.
  • for j:=i+1 to n-1 do: цикл, который сравнивает элементы массива x.
  • If x[i]>x[j] Then: проверяет, если i-й элемент массива x больше j-го элемента.
  • tmp:=x[i];: присваивает временную переменную tmp значение i-го элемента массива x.
  • x[i]:=x[j];: присваивает i-й элемент массива x значению j-го элемента массива x.
  • x[j]:=tmp;: присваивает j-й элемент массива x значению временной переменной tmp.
  • end;: завершает цикл.
  • writeln('Полученный массив:'); выводит на экран строку Полученный массив:.
  • for i:=0 to n-1 do: цикл, который выводит на экран i-й элемент массива x.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.071 из 5
Похожие ответы