Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.12.10;
Скачать: CL | DM;

Вниз

как заполнить массив   Найти похожие ветки [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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.031 c
2-1163940486
~Aid~
2006-11-19 15:48
2006.12.10
как заполнить массив


15-1164260461
pavel_guzhanov
2006-11-23 08:41
2006.12.10
Подскажите как правильнее делать a функции/процедуре...


3-1159871123
ККВ
2006-10-03 14:25
2006.12.10
Как получить значение поля?


1-1161768709
BFG9k
2006-10-25 13:31
2006.12.10
Как скачать каринку с помощью idHTTPServer


2-1164005153
Multy
2006-11-20 09:45
2006.12.10
Как прочитать массив констант из Dll?