Форум: "Начинающим";
Текущий архив: 2006.12.10;
Скачать: [xml.tar.bz2];
Внизкак заполнить массив Найти похожие ветки [0..3,0...3]
← →
~Aid~ (2006-11-19 15:48) [0]как заполнить массив [0..3,0...3] разными числами от 0 до 15
← →
Anatoly Podgoretsky © (2006-11-19 15:49) [1]> ~Aid~ (19.11.2006 15:48:00) [0]
В цикле
← →
Орион © (2006-11-19 15:49) [2]домашнее задание? Книжки читай.
← →
~Aid~ (2006-11-19 15:53) [3]ыыы... не могу найти почему зацикливается...
label 1;
var
i,j,c:integer;
mas:array[0..3,0..3] of integer;
function findN(a:integer):boolean;
var
g,k:integer;
begin
for g:=0 to 3 do begin
for k:=0 to 3 do begin
if a=mas[g,k] then begin result:=false;exit;end;
end;
end;
result:=true;
end;
begin
randomize;
for i:=0 to 3 do begin
for j:=0 to 3 do begin
1: c:=random(14)+1;
if findN(c) then mas[i,j]:=c
else goto 1;
end;
end;
for i:=0 to 3 do begin
for j:=0 to 3 do begin
write(mas[i,j]," ");
end;
writeln;
end;
readln;
← →
Джо © (2006-11-19 15:56) [4]Я не могу заставить себя поверить, что подобный код написан человеком (c) Знакомый менеджер.
← →
~Aid~ (2006-11-19 15:58) [5])) человеком
← →
Anatoly Podgoretsky © (2006-11-19 16:00) [6]> ~Aid~ (19.11.2006 15:53:03) [3]
4*4 = 16
Плюс не выполняется условие от 0
← →
~Aid~ (2006-11-19 16:01) [7]то есть числа 0,1,..,15
что значит условие от 0?
← →
KilkennyCat © (2006-11-19 16:02) [8]> if findN(c) then mas[i,j]:=c
> else goto 1;
вероятно, здесь всегда гоуту. вот и зацикливается.
← →
~Aid~ (2006-11-19 16:03) [9]а как поправить?
← →
KilkennyCat © (2006-11-19 16:04) [10]переписать алгоритм нафиг.
← →
Anatoly Podgoretsky © (2006-11-19 16:05) [11]> ~Aid~ (19.11.2006 16:01:07) [7]
как заполнить массив [0..3,0...3] разными числами от 0 до 15
← →
KilkennyCat © (2006-11-19 16:05) [12]в твоем варианте, методом от противного:
заполняй последовательностью 0..15 случайно выбранные ячейки, с проверкой их на уже заполненность. код будет в пять раз меньше.
← →
~Aid~ (2006-11-19 16:06) [13]а... щас попробую
← →
Орион © (2006-11-19 16:09) [14]> [12] KilkennyCat © (19.11.06 16:05)
Теоретически бесконечный цикл может получиться :)
Лучше сразу заполнить массив числами, а потом рандомное чило рандомных перестановок сделать.
← →
KilkennyCat © (2006-11-19 16:12) [15]> [14] Орион © (19.11.06 16:09)
теоретически как раз бесконечно не будет, а вот практически :))
Но, мощная машина успеет отработать :)
← →
~Aid~ (2006-11-19 16:14) [16]так как же лучше сделать?
← →
Anatoly Podgoretsky © (2006-11-19 16:16) [17]> ~Aid~ (19.11.2006 16:14:16) [16]
В институте вывесить объяву - помогите решить, оплату гарантирую.
← →
~Aid~ (2006-11-19 16:18) [18]Anatoly Podgoretsky
не уместно
← →
KilkennyCat © (2006-11-19 16:28) [19]можно несколькими способами. моим, или Ориона... или еще третьим вариантом.
от прогона пустых циклов в моем варианте тоже несложно уйти.
← →
Anatoly Podgoretsky © (2006-11-19 16:28) [20]> ~Aid~ (19.11.2006 16:18:18) [18]
Конечно неуместно, 14 чисел не хватит для заполнения массива из 16 элементов и как ни старайся только зацикливание и получишь.
← →
~Aid~ (2006-11-19 16:45) [21]ыы от [0..15]-так понятно.
вообще написал вроде бы быстро работает..
нехотел рандом потому что еще будет подсчет кол-ва инверсий в массиве.. то есть будет не очень быстро
c:=0;
for i:=0 to 3 do begin
for j:=0 to 3 do begin
mas[i,j]:=c;
inc(c);
end;
end;
c:=random(5)+50;
for i:=1 to c do
begin
o1:=random(4);
p1:=random(4);
o2:=random(4);
p2:=random(4);
c:=mas[o1,p1];
mas[o1,p1]:=mas[o2,p2];
mas[o2,p2]:=c;
end;
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.12.10;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.044 c