Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/27: Рейтинг темы: голосов - 27, средняя оценка - 4.93
apenninus

Заполнение массива случайными числами без повтора

25.02.2012, 22:27. Показов 5670. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Не выходит заполнить массив случайными числами без повтора. Когда открываю его в браузере, то страничка подвисает.. наверное зациклилась где-то= /
Вот весь код на данный момент:
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<html> 
<head>
<title>6</title>
<script language="JavaScript"> 
<!-- 
var K=4;
function InitTable() {
 
 
var arr = new Array(["0","0","0","0"],["0","0","0","0"],["0","0","0","0"],["0","0","0","0"]);
for(var i=0;i<K;i++)
    for(var j=0;j<K;j++)
    {
    var y=1;
        while(y!=0)//пока y не равен 0
            {
            y=0;
            rand=Math.round(Math.random() * 15)%15+1;
                for(var l=0;l<K;l++)//просматривает весь массив
                    for(var g=0;g<K;g++)
                        {
                        if(arr[l][g]==rand)//если хоть одна ячейка уже заполнена этим числом
                            y=1; //ставим единицу
                        }
            if(y==0)//если же y по-прежнему равен 0
            arr[i][j]=rand;
            }
 
    }
arr[0][0]=" ";
 
    var m;
    var n;
    var kod = "<table background='cosmos1.jpg' border=1 cellpadding=20 id='mytable' >";
    for( m=0; m < K; m++ )
       {
        kod += "<tr>";
        for( n = 0; n< K; n++ )
        kod += "<td >"+arr[m][n]+"</td>";
           
        kod += "</tr>";
       }
    kod += "</table>";
    document.getElementById('table1').innerHTML = kod;//записываем сюда всю таблицу
}
 
 
          
// --> 
</script> 
</head>
<body  >
<div id="table1"></div>
<script>
<!--
 
InitTable();
//-->
</script>
 
</body>
</html>
Интересует эта часть:
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
var arr = new Array(["0","0","0","0"],["0","0","0","0"],["0","0","0","0"],["0","0","0","0"]);
for(var i=0;i<K;i++)
    for(var j=0;j<K;j++)
    {
    var y=1; //пропуск в while
        while(y!=0)//пока y не равен 0, а изначально он и не равен
            {
            y=0;
            rand=Math.round(Math.random() * 15)%15+1;//исключая 0
                for(var l=0;l<K;l++)//просматривает весь массив
                    for(var g=0;g<K;g++)
                        {
                        if(arr[l][g]==rand)//если хоть одна ячейка уже заполнена этим числом
                            y=1; //ставим единицу
                        }
            if(y==0)//если же y по-прежнему равен 0
            arr[i][j]=rand;
            }
 
    }
arr[0][0]=" ";
Для того, чтобы избежать повторяющихся чисел из диапазона 1-15, я добавила цикл while, может быть с ним что-то не так. Помогите, пожалуйста, разобраться.

Добавлено через 33 минуты
Поняла, в чем дело, исправила, работает.
Хотя громоздкий код вышел..

Добавлено через 3 часа 49 минут
Весь код:
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
<html> 
<head>
<title>pyatnashki</title>
 
<script type="text/javascript">
<!-- 
var K=4;
var arr = Array(["0","0","0","0"],["0","0","0","0"],["0","0","0","0"],["0","0","0","0"]);
function random(arr)
{
 
for(var i=0;i<K;i++)
    for(var j=0;j<K;j++)
    {
    var y=1;
        while(y!=0)//пока игрик не равен 0
            {
            y=0;
        
            rand=Math.round(Math.random() * 16)%16+1;//исключая 0
                for(var l=0;l<K;l++)//просматривает весь массив
                    for(var g=0;g<K;g++)
                        {
                        if(arr[l][g]==rand)//если хоть одна ячейка уже заполнена этим числом
                            y=1; //ставим единицу
                
                        }
            if(y==0)//если же y по-прежнему равен 0
            arr[i][j]=rand;
            }
 
    }
for(var l=0;l<K;l++)//просматривает весь массив
for(var g=0;g<K;g++)    
if(arr[l][g]==16)
arr[l][g]=" ";
 
 
}
function InitTable(arr) 
{
//var arr = Array(["0","0","0","0"],["0","0","0","0"],["0","0","0","0"],["0","0","0","0"]);
    var m;
    var n;
    var kod = "<table background='cosmos1.jpg' border=1 cellpadding=20 id='mytable' >";
    for( m=0; m < K; m++ )
       {
        kod += "<tr>";
        for( n = 0; n< K; n++ )
        kod += "<td onclick='ChangeNumb("+m+","+n+")'>"+arr[m][n]+"</td>";
           
        kod += "</tr>";
       }
    kod += "</table>";
    document.getElementById('table1').innerHTML = kod;//записываем сюда всю таблицу
}
 
  function ChangeNumb(m,n)
    {
        
        for (var i = 0; i < K; i++)
         for (var j = 0; j < K; j++)
                if (mytable.rows[i].cells[j].innerHTML==" ")
                {
                   // zero = mytable.rows[i].cells[j].innerHTML;
                    var Ind = i; //строка
                    var Jnd = j; //столбец
                }   
            tek=mytable.rows[m].cells[n].innerHTML;
            if( mytable.rows[m-1].cells[n].innerHTML==" " || mytable.rows[m+1].cells[n].innerHTML==" "||mytable.rows[m].cells[n-1].innerHTML==" "|| mytable.rows[m].cells[n+1].innerHTML==" " )
            {
            mytable.rows[m].cells[n].innerHTML=" ";
            mytable.rows[Ind].cells[Jnd].innerHTML=tek;
            
            }
                        
 }        
// --> 
</script> 
</head>
<body  >
<div id="table1"></div>
<script type="text/javascript">
<!--
random(arr);
InitTable(arr);
//-->
</script>
 
</body>
</html>
Не работает функция ChangeNumb(m,n). Крайние числа не хотят перемещаться на свободную ячейку иногда =/
Что-то с оператором if() из 74 строки кода.
mytable.rows[m-1].cells[n].innerHTML==" " здесь, например, выходит, я могу обратиться к несуществующему элементу массива [-1][n]? Может быть это и есть ошибка. Пробовала вводить еще условия, чтобы это как-то исправить, но ничего не выходило.
Помогите, пожалуйста)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.02.2012, 22:27
Ответы с готовыми решениями:

Пользователь задает размер массива и он заполняет массив случайными целыми числами, в диапазоне от -100 до 100
Как это реализовать

Заполнение случайными значениями массива чисел 4 на 5 без повтора
Приветствую вас парни! Подсобите с кодом. Голова уже опухла, хожу блужу вокруг трех сосен. Нужен рэндом массива 5 на 4, 20 чисел. Файл...

Заполнение массива случайными числами, но без нулей
Здравствуйте все. Должны быть числа и отрицательные и положительные, но без нулей! Вот написал. Но тупо. Как сделать лучше? for (int...

3
apenninus
29.02.2012, 13:19
Спасибо всем за просмотры темы : P, исправила if, действительно пустяк.
2 / 2 / 0
Регистрация: 03.09.2010
Сообщений: 77
17.09.2012, 12:09
а как в данном коде сделать, чтобы все ячейки заполнялись?
0
Заблокирован
17.09.2012, 12:54
apenninus, действительно, код громоздкий у вас получился
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<html> 
<head>
<title>pyatnashki</title>
</head>
<body>
<table id="mytable"></table>
<script>
(function ()
{
for (var M = [], R = [], j = 0; j < 15; j++) M [j] = j + 1; M [j] = '&nbsp;';
while (M.length) R [R.length] = M.splice ((Math.random () * M.length), 1);
var tbl = document.getElementById ('mytable');
tbl.border = 1; tbl.background = 'cosmos1.jpg';
for (var r = k = 0; r < 4; r++) for (var ro = tbl.insertRow (-1), c = 0; c < 4; c++)
   {
   var ce = ro.insertCell (-1); ce.innerHTML = R [k++];
   with (ce.style) textAlign = 'center', width = '5ex', lineHeight = '5ex';
   }
}) ();
</script>
</body>
</html>
Tan'chik, строку
for (var M = [], R = [], j = 0; j < 15; j++) M [j] = j + 1; M [j] = '&nbsp;';
замените на
for (var M = [], R = [], j = 0; j < 16; j++) M [j] = j + 1;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.09.2012, 12:54
Помогаю со студенческими работами здесь

Заполнение массива случайными числами без повторений
Как сгенерировать массив от 1 до 15, чтобы ни одно число в массиве не повторялось и последовательность была случайной ?

Рекурсия: заполнение одномерного массива целыми случайными числами без повторений
Помогите, пожалуйста, с задачей. 1. Описать функцию для заполнения одномерного массива целыми случайными числами без повторений....

Заполнение массива случайными числами
создайте массив,элементы которого задаются случайным образом в диапазоне от 0 до 10. сформируйте второй массив,элементы которого выведены...

Заполнение массива случайными числами
#include &lt;stdio.h&gt; #include &lt;conio.h&gt; int main(int argc, char *argv,int rand()) { int M; for(int i=0;i&lt;15;i++) { M =...

Заполнение массива случайными числами
Нужно создать массив и заполнить его рандомными числами


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru