Содержание:
- Описание задачи
- Заполните массив случайным образом нулями и единицами так, чтобы количество единиц было больше количества нулей на языке Java
- Заполните массив случайным образом нулями и единицами так, чтобы количество единиц было больше количества нулей на языке Pascal
- Заполните массив случайным образом нулями и единицами так, чтобы количество единиц было больше количества нулей на языке Python
Задание: Pascal. Заполните массив случайным образом нулями и единицами так, чтобы количество единиц было больше количества нулей
1 способ решения
Заполнить массив чуть меньше половины нулями и перемешать
Дано:
Pascal(Паскаль) - язык программирования
N - количество элементов в массиве
randomize - используется в Паскаль для включения генератора случайных чисел с помощью random()
returnArray - тип данных массива
arrayBinary - массив
arrayFill(): returnArray - функция, заполняющая массив единицами. Возвращает обратно массив.
arrayFillZero(var a: returnArray): returnArray - функция, заполняющая массив меньше половины нулями. Возвращает обратно массив.
nNew - максимальное количество допустимых нулей в arrayBinary.
Решение:
program shuffleArrayBinary;
CONST
N = 15;
type
returnArray = array [1..N] of integer;
var
arrayBinary: returnArray;
i: integer;
function arrayFill(): returnArray;
var
i: integer;
a: returnArray;
begin
for i := 1 to N do
a[i] := 1;
arrayFill :=a;
end;
function arrayFillZero(var a: returnArray): returnArray;
var
i: integer;
nNew: integer;
begin
nNew := round(N/2) - 1;
for i := 1 to nNew do
a[i] := 0;
arrayFillZero :=a;
end;
function shuffleArray(var a: returnArray): returnArray;
var
i, index, temp: integer;
begin
for i := N downto 1 do
begin
index:= random(i) + 1;
temp:= a[index];
a[index]:= a[i];
a[i]:= temp;
end;
shuffleArray :=a;
end;
begin
randomize;
arrayBinary:= arrayFill(); //Заполнение массива единицами
arrayBinary:= arrayFillZero(arrayBinary); //Заполнение массива нулями
arrayBinary:= shuffleArray(arrayBinary); //Перемешивание массива случайным образом
for i := 1 to N do //Вывод массива
write(arrayBinary[i], ' ');
end.
Результат:
1 0 1 0 0 1 0 1 1 0 1 0 0 1 1
2 способ решения
Заполнить массив единицами и случайным образом на каждой ячейке массива(либо через одну) расставлять нули. Если количество нулей равно количеству единиц -1, то цикл завершается
Дано:
Pascal(Паскаль) - язык программирования
N - количество элементов в массиве
returnArray - тип данных массива
randomize - используется в Паскаль для включения генератора случайных чисел с помощью random()
round - округление числа в большую сторону до целого числа
arrayBinary - массив
arrayFill(): returnArray - функция, заполняющая массив единицами. Возвращает обратно массив.
arrayFillZero(var a: returnArray): returnArray - функция, заполняющая массив нулями. Возвращает обратно массив.
nNew - максимальное количество допустимых нулей в arrayBinary.
nReal - реальное количество нулей в arrayBinary.
Решение:
program shuffleArrayBinary;
CONST
N = 15;
type
returnArray = array [1..N] of integer;
var
arrayBinary: returnArray;
i: integer;
function arrayFill(): returnArray;
var
i: integer;
a: returnArray;
begin
for i := 1 to N do
a[i] := 1;
arrayFill :=a;
end;
function arrayFillZero(var a: returnArray): returnArray;
var
i: integer;
nNew: integer;
nReal: integer;
begin
nNew := round(N/2) - 1;
nReal := 0;
for i := 1 to N do
begin
a[i] := random(2);
if a[i]=0 then
nReal := nReal + 1;
if nReal=nNew then
break;
end;
arrayFillZero :=a;
end;
begin
randomize;
arrayBinary:= arrayFill(); //Заполнение массива единицами
arrayBinary:= arrayFillZero(arrayBinary); //Заполнение массива нулями
for i := 1 to N do
write(arrayBinary[i], ' ');
end.
Результат:
1 1 0 1 1 1 1 0 0 0 1 0 0 0 1
3 способ решения
Заполнить случайно массив единицами и нулями. В случае превышения нулей, расставить недостающие единицы
Дано:
Pascal(Паскаль) - язык программирования
N - количество элементов в массиве
returnArray - тип данных массива
randomize - используется в Паскаль для включения генератора случайных чисел с помощью random()
round - округление числа в большую сторону до целого числа
arrayBinary - массив
arrayFill(): returnArray - функция, заполняющая массив единицами и нулями случайным образом. Возвращает обратно массив.
nNew - максимальное количество допустимых нулей в arrayBinary.
nReal - реальное количество нулей в arrayBinary.
rand - случайное число от 0 до 1 включительно.
Решение:
program shuffleArrayBinary;
CONST
N = 15;
type
returnArray = array [1..N] of integer;
var
arrayBinary: returnArray;
i: integer;
function arrayFill(var a: returnArray): returnArray;
var
i: integer;
nNew: integer;
nReal: integer;
rand: integer;
begin
nNew := round(N/2) - 1;
nReal := 0;
rand := 0;
for i := 1 to N do
begin
if nReal>=nNew then
rand := 1
else
rand:=random(2);
a[i] := rand;
if rand=0 then
nReal := nReal + 1;
end;
arrayFill :=a;
end;
begin
randomize;
arrayBinary:= arrayFill(arrayBinary); //Заполнение массива единицами и нулями
for i := 1 to N do
write(arrayBinary[i], ' ');
end.
Результат:
1 0 1 0 1 0 0 0 1 1 1 0 1 1 1