Перемешать массив - Pascal ABC

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

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

Необходимо перемешать массив так, чтобы одинаковые числа в нём не стояли рядом. А если это не возможно вывести "0". А да с начала вводится кол-во элементов массива, а потом сами элементы. Вот, что у меня получилось. Но работает криво...
Заранее благодарен!

Решение задачи: «Перемешать массив»

textual
Листинг программы
var a,b:array [0..100] of integer;
    n,i,one,k:integer;
begin
write('N = '); readln(n);
for i:=1 to n do begin
write('a[',i,'] = '); readln(a[i]);
end;
one:=random(n);
for i:=1 to n do
if a[i]=a[i+1] then begin
k:=a[i+1];
a[i+1]:=a[one];
a[one]:=k;
end;
for i:=1 to n do write(a[i]:3);
writeln;
end.

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

  1. В начале программы объявляются переменные: массив a и b, а также переменные n, i, one и k типа integer. Значения массива a и b инициализируются пустыми значениями (null).
  2. Пользователю предлагается ввести количество элементов массива n.
  3. В цикле от 1 до n происходит чтение значений элементов массива a.
  4. Переменная one инициализируется случайным числом из диапазона от 1 до n.
  5. В цикле от 1 до n происходит сравнение элементов массива a. Если элементы равны, то один из них (k) присваивается значение элемента с индексом one. Значения элементов меняются местами.
  6. В цикле от 1 до n происходит вывод значений элементов массива a с отступами для удобочитаемости.
  7. Завершается программа выводом пустой строки.

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


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

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

10   голосов , оценка 3.8 из 5