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

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

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

Перестановка. В массиве X[1:n] каждый элемент равен 0, 1 или 2. Переставить элементы массива так, чтобы сначала располагались все нули, затем единицы и, наконец, все двойки (дополнительного массива не заводить). 1<=n<=30. Входные данные: в первой строке записано целое число n, во второй строке последовательность чисел через пробел. Выходные данные: в единственной строке записать последовательность чисел как требует задача
Листинг программы
  1. Var
  2. x: Array of Byte;
  3. i,j,tmp,n: Byte;
  4. BEGIN
  5. readln(n);
  6. setlength(x,n);
  7. Writeln('Исходный массив:');
  8. For i:=0 to n-1 do
  9. read(x[i]);
  10. begin
  11. For j:=i+1 to n-1 do
  12. If x[i]>x[j] Then
  13. begin
  14. tmp:=x[i];
  15. x[i]:=x[j];
  16. x[j]:=tmp
  17. end;
  18. end;
  19. Writeln;
  20. Writeln('Полученный массив:');
  21. for i:=0 to n-1 do
  22. write(x[i],'');
  23. END.
Почти сделал, но где-то здесь ошибка, и он не меняет массив как требует сама задача
Решил.

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

textual
Листинг программы
  1. var x: array of byte;
  2.     i,j,tmp,n: byte;
  3. begin
  4. randomize;
  5. readln(n);
  6. setlength(x,n);
  7. writeln('Исходный массив:');
  8. for i:=0 to n-1 do
  9.  begin
  10.   x[i]:=random(3);
  11.   write(x[i],' ');
  12.  end;
  13. writeln;
  14. for i:=0 to n-2 do
  15. for j:=i+1 to n-1 do
  16. If x[i]>x[j] Then
  17.  begin
  18.   tmp:=x[i];
  19.   x[i]:=x[j];
  20.   x[j]:=tmp
  21.  end;
  22. writeln('Полученный массив:');
  23. for i:=0 to n-1 do
  24. write(x[i],' ');
  25. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы