Переставить элементы массива так, чтобы сначала располагались все нули, затем единицы - 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.