Другие языки программирования и технологии
Как заполнить двумерный массив 4x4 случайными неповторяющимися числами от 1 до 16?
Синтаксис паскаля. Никак что-то не могу толку дать, заклинило :(
Доброго времени суток.
Заполняете массив числами от 1 до 16 по-порядку, а потом в цикле выбираете случайным образом индексы двух ячеек и меняете элементы местами. Число итераций виберите экспериментально. Полагаю, что сотни хватит, чтобы элементы перемешались.
А можно и по другому. Генерите первое случайное число, пишите его в массив и заносите в множестово. А дальше после получения очередного числа проверяете, есть оно в множестве или нет. Если есть, генерите новое, а если нет, то в массив его и добавляете к множеству.
Удачи!
Заполняете массив числами от 1 до 16 по-порядку, а потом в цикле выбираете случайным образом индексы двух ячеек и меняете элементы местами. Число итераций виберите экспериментально. Полагаю, что сотни хватит, чтобы элементы перемешались.
А можно и по другому. Генерите первое случайное число, пишите его в массив и заносите в множестово. А дальше после получения очередного числа проверяете, есть оно в множестве или нет. Если есть, генерите новое, а если нет, то в массив его и добавляете к множеству.
Удачи!
делаем цыкл, берем генератор случайных чисел, множим на 16, и подставляем поочередно.
Код на 10-15 строк
Код на 10-15 строк
пишу прям в браузере -> могут быть ошибки :)
label: label; {метки не помню до вара или после и синтаксис тоже :)}
var i,j,k,k,l:=byte;
array:array[1..4,1..4]of byte
begin
randomize:
for i:=1 to 4 do
for j:=1 to 4 do begin
label:
array[i,j]:=random(16); {(или 17)}
for k:=1 to i do
for l:=1 to l do
if array[k,l]=array[i,j] then goto label:
end;
end.
label: label; {метки не помню до вара или после и синтаксис тоже :)}
var i,j,k,k,l:=byte;
array:array[1..4,1..4]of byte
begin
randomize:
for i:=1 to 4 do
for j:=1 to 4 do begin
label:
array[i,j]:=random(16); {(или 17)}
for k:=1 to i do
for l:=1 to l do
if array[k,l]=array[i,j] then goto label:
end;
end.
//псевдокод
void Fill()
{
for(...<4)
{
for(...<4)
{
while(true)
{
//случайное значение может повторяться
vaue=GetRandomValue(16);
if(Check(value, array))
{
array[j]=value;
break;
}
}
}
}
}
//проверим что это число еще не занесли в массив
bool Check(value, array)
{
for(...)
for(...)
{
if(array[i[j]=value)
return false;
}
return true;
}
void Fill()
{
for(...<4)
{
for(...<4)
{
while(true)
{
//случайное значение может повторяться
vaue=GetRandomValue(16);
if(Check(value, array))
{
array[j]=value;
break;
}
}
}
}
}
//проверим что это число еще не занесли в массив
bool Check(value, array)
{
for(...)
for(...)
{
if(array[i[j]=value)
return false;
}
return true;
}
Пойдет? :
var x:array [1..4,1..4] of byte;
n,i,j:integer;
x1,y1,x2,y2:integer;
begin
randomize;
for i:=1 to 4 do for j:=1 to 4 do x[i,j]:=j+(i-1)*4;
for i:=1 to 100 do begin
x1:=random (4)+1;
y1:=random (4)+1;
x2:=random (4)+1;
y2:=random (4)+1;
n:=x[x1,y1];
x[x1,y1]:=x[x2,y2];
x[x2,y2]:=n;
end;
for i:=1 to 4 do begin
for j:=1 to 4 do
write (x[i,j]:3);
writeln; end;
readln;
end.
var x:array [1..4,1..4] of byte;
n,i,j:integer;
x1,y1,x2,y2:integer;
begin
randomize;
for i:=1 to 4 do for j:=1 to 4 do x[i,j]:=j+(i-1)*4;
for i:=1 to 100 do begin
x1:=random (4)+1;
y1:=random (4)+1;
x2:=random (4)+1;
y2:=random (4)+1;
n:=x[x1,y1];
x[x1,y1]:=x[x2,y2];
x[x2,y2]:=n;
end;
for i:=1 to 4 do begin
for j:=1 to 4 do
write (x[i,j]:3);
writeln; end;
readln;
end.
Похожие вопросы
- заполнить двумерный массив
- Дан двумерный массив А [7,8], заполненный случайным образом. Заменить нечетные элементы массива на число 0 СРОЧНОО ГАЙСЫ
- дан двумерный массив С(3,4).Получите новый массив А путём увеличения всех элементов исходного массива на число С.
- randomize();. С++; Как заполнить массив допустим из 15 чисел случайным образом от 1 до 15 , чтобы числа не повторялись?
- Задан массив m на n. Числа m и n вводятся вручную. Заполнить массив случайным образом. Найти произведение чисел от 10 до
- C++ Двухмерный массив с случайными не повторяющимися числами.
- Дан целочисленный двумерный массив, размерности n х m. Заменить все отрицательные числа нулем
- КАК С ГЕНЕРИРОВАТЬ ДВА МАССИВА ИЗ СЛУЧАЙНЫХ ЧИСЕЛ С ПОМОЩЬЮ RANDOM НА ЯЗЫКЕ СИ? Я смог только заполнить от 0 до 255
- помогите срочно надо Квадратные массивы тема: Двумерные массивы на языке C++
- Необходимо упорядочить строки двумерного массива, по возрастанию первого эл-та. СИ.