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