Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.039 c
15-1164169616
Tab
2006-11-22 07:26
2006.12.10
защита данных в базе


2-1164396380
Kostafey
2006-11-24 22:26
2006.12.10
Простой вопрос по Object Pascal.


3-1159789438
ceval
2006-10-02 15:43
2006.12.10
как в DBText загрузить определенное поле с таблицы


6-1153381513
s_pavell
2006-07-20 11:45
2006.12.10
Аудит принтера в сети


15-1164108292
V.I.P
2006-11-21 14:24
2006.12.10
Нужно сделать программу за $$$





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский