SHOW:
|
|
- or go back to the newest paste.
| 1 | const | |
| 2 | n = 100; // размер массива | |
| 3 | ||
| 4 | var | |
| 5 | m, base: array [0..n] of integer; | |
| 6 | i, t, k, nom: Byte; // переменные не будут принимать больши значения, поэтому хватит и Byte | |
| 7 | {
| |
| 8 | m - массив, в который будут заноситься значения | |
| 9 | base - массив значений, из которого будут братся значения для массива m | |
| 10 | ||
| 11 | i - счётчик для цикла | |
| 12 | t - переменная для обмена значениями двух переменных | |
| 13 | k - кол-во нераспределенных элементов базы (массив base) | |
| 14 | nom - номер элемента массива, назначающийся случайно | |
| 15 | } | |
| 16 | ||
| 17 | begin | |
| 18 | randomize; // отключаем одинаковый рандом | |
| 19 | k := n; // кол-во оставшихся элементов в базе изначально равно размеру массива m | |
| 20 | ||
| 21 | for i := 0 to n do // цикл от первого элемента массива до последнего | |
| 22 | base[i] := i; // инициализируем базу | |
| 23 | ||
| 24 | for i := 0 to n do // цикл от первого элемента массива до последнего | |
| 25 | begin // начало цикла | |
| 26 | nom := random(k); // генерируем номер элемента, который будем брать с базы | |
| 27 | m[i] := base[nom]; // записываем значение выбранного элемента в наш массив | |
| 28 | ||
| 29 | t := base[nom]; // записываем значение выбранного элемента во временную переменную | |
| 30 | base[nom] := base[k]; // заменяем значение выбранного элемента на значение последнего неиспользованного элемента в базе | |
| 31 | base[k] := t; // из временной переменной записываем значение в последний элемент базы | |
| 32 | ||
| 33 | dec(k); // уменьшаем кол-во неиспользованных элементов базы на 1 | |
| 34 | end; // конец цикла | |
| 35 | ||
| 36 | // Вывод на экран полученного массива | |
| 37 | for i := 0 to n do | |
| 38 | writeln(m[i]); // вывод элемента массива | |
| 39 | readln; // ждём нажатия любой клавиши для закрытия программы, чтобы успеть посмотреть на результат программы | |
| 40 | end. |