Перемешать массив - 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.
Объяснение кода листинга программы
- В начале программы объявляются переменные: массив a и b, а также переменные n, i, one и k типа integer. Значения массива a и b инициализируются пустыми значениями (null).
- Пользователю предлагается ввести количество элементов массива n.
- В цикле от 1 до n происходит чтение значений элементов массива a.
- Переменная one инициализируется случайным числом из диапазона от 1 до n.
- В цикле от 1 до n происходит сравнение элементов массива a. Если элементы равны, то один из них (k) присваивается значение элемента с индексом one. Значения элементов меняются местами.
- В цикле от 1 до n происходит вывод значений элементов массива a с отступами для удобочитаемости.
- Завершается программа выводом пустой строки.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д