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

что делают функции

20.10.2015, 20:49. Показов 751. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
1)
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
function solve()
{
  var inputs = document.getElementsByTagName("input");
  var a = new Array(5);
  var i, j;
  var letters;
  var status;
  for (i = 0; i < 5; i++) {
    a[i] = new Array(5);
    for (j = 0; j < 5; j++)
      a[i][j] = inputs[i*5 + j].value.toUpperCase();
  }
Не понятно что значит a[i] = new Array(5); Это такой способ создания двумерного массива?

2)
JavaScript
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
function getLetters(a)
{
  var letters = new Array();
  var i, j;
  Array.prototype.hasObject = (
    !Array.indexOf ? function (o)
    {
      var l = this.length + 1;
      while (l -= 1) {
        if (this[l - 1] === o) return true;
      }
      return false;
    } : function (o)
    {
      return (this.indexOf(o) !== -1);
    }
  );
  for (i = 0; i < 5; i++) {
    for (j = 0; j < 5; j++) {
      if (a[i][j] && !letters.hasObject(a[i][j])) {
        letters.push(a[i][j]);
      }
    }
  }
  return letters;
}
Тут не понятна часть до цикла, это проверка на наличие элемента в массиве? тогда какого?
И в цикле что значит вот это:if (a[i][j])?

3)
JavaScript
1
2
3
4
5
6
7
8
9
10
11
do {
    status = makeOneStep(a, letters);
    if (status == 1) {
      showError('задача не имеет однозначного решения.');
      return false;
    }
    if (status == 2) {
      showError('задача не имеет решения.');
      return false;
    }
  } while (status);
makeOneStep возвращает 1,2, или 3. А while работает пока status == 1???


Подскажите пожалуйста.
Вот полный код если необходим:
JavaScript
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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
function showError(s)
{
  document.getElementById('result').innerHTML = '<p>' + 'Ошибка: ' + s + '</p>';
}
 
function getPossibleLetters(a, letters, x, y)
{
  var used = new Array();
  var possible = new Array();
  var i;
  for (i = 0; i < 5; i++) {
    if (i != x && a[i][y] && !used.hasObject(a[i][y]))
        used.push(a[i][y]);
    if (i != y && a[x][i] && !used.hasObject(a[x][i]))
        used.push(a[x][i]);
  }
  if (x == y) {
    for (i = 0; i < 5; i++) {
      if (i != x && a[i][i] && !used.hasObject(a[i][i]))
        used.push(a[i][i]);
    }
  }
  if (x == 4 - y) {
    for (i = 0; i < 5; i++) {
      if (i != x && a[i][4-i] && !used.hasObject(a[i][4-i]))
        used.push(a[i][4-i]);
    }
  }
  for (i = 0; i < letters.length; i++) {
    if (!used.hasObject(letters[i]))
      possible.push(letters[i]);
  }
  return possible;
}
 
function checkCorrectness(a, letters)
{
  var i, j;
  for (i = 0; i < 5; i++) {
    for (j = 0; j < 5; j++) {
      if (a[i][j] && !getPossibleLetters(a, letters, i, j).hasObject(a[i][j]))
        return false;
    }
  }
  return true;
}
 
// Делаем очередной шаг решения.
// Возвращаемые значения:
//  0 - задача решена (не осталось пустых клеток)
//  1 - нет однозначного решения
//  2 - нет решений
//  3 - удалось успешно сделать шаг (вставить одну из букв на нужное место)
function makeOneStep(a, letters)
{
  var i, j;
  var empty = 0;
  var possible;
  for (i = 0; i < 5; i++) {
    for (j = 0; j < 5; j++) {
      if (a[i][j]) continue;
      empty++;
      possible = getPossibleLetters(a, letters, i, j);
      if (possible.length == 0) return 2;
      if (possible.length == 1) {
        a[i][j] = possible[0];
        return 3;
      }
    }
  }
  if (empty == 0) return 0;
  return 1;
}
 
function showSolution(a)
{
  var s = '<p>Решение:</p><table border="1">';
  var i, j;
  for (i = 0; i < 5; i++) {
    s += '<tr><th>' + (5 - i) + '</th>';
    for (j = 0; j < 5; j++)
      s += '<td><input type="text" size=1 readonly="readonly" value="' + a[i][j] + '" /></td>';
    s += '</tr>';
  }
  s += '<tr><th>&nbsp;&emsp;&nbsp;</th>' +
       '<th>a</th><th>b</th><th>c</th><th>d</th><th>e</th></tr>' +
       '</table>';
  document.getElementById('result').innerHTML = s;
}
 
function getLetters(a)
{
  var letters = new Array();
  var i, j;
  Array.prototype.hasObject = (
    !Array.indexOf ? function (o)
    {
      var l = this.length + 1;
      while (l -= 1) {
        if (this[l - 1] === o) return true;
      }
      return false;
    } : function (o)
    {
      return (this.indexOf(o) !== -1);
    }
  );
  for (i = 0; i < 5; i++) {
    for (j = 0; j < 5; j++) {
      if (a[i][j] && !letters.hasObject(a[i][j])) {
        letters.push(a[i][j]);
      }
    }
  }
  return letters;
}
 
function solve()
{
  var inputs = document.getElementsByTagName("input");
  var a = new Array(5);
  var i, j;
  var letters;
  var status;
  for (i = 0; i < 5; i++) {
    a[i] = new Array(5);
    for (j = 0; j < 5; j++)
      a[i][j] = inputs[i*5 + j].value.toUpperCase();
  }
  letters = getLetters(a);
  if (letters.length != 5) {
    showError('количество различных букв в сквэрворде должно быть равно пяти.');
    return false;
  }
  if (!checkCorrectness(a, letters)) {
    showError('исходное задание не удовлетворяет правилам построения сквэрворда.');
    return false;
  }
  do {
    status = makeOneStep(a, letters);
    if (status == 1) {
      showError('задача не имеет однозначного решения.');
      return false;
    }
    if (status == 2) {
      showError('задача не имеет решения.');
      return false;
    }
  } while (status);
  showSolution(a);
  return false;
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.10.2015, 20:49
Ответы с готовыми решениями:

Объясните пожалуйста ,что делают следующие задачи:
Объясните пожалуйста ,что делают следующие задачи: 1 var a=new Array(&quot;2&quot;,&quot;48&quot;,&quot;000&quot;,&quot;99&quot;); a.sort(Compare); var s=a; function...

Функции и что делают
У меня есть такая полностью написанная программа по Файловому менеджеру .нужно определить что делает каждая функция... помогите...

Я не могу понять что делает данная программа. Точнее что делают функции используемые в это коде
#include &lt;iostream&gt; #include &lt;Windows.h&gt; #include &lt;ctime&gt; using namespace std; int g(int a, int n); int s(int a, int n); int...

3
Ренегат
Эксперт HTML/CSS
 Аватар для BANO
1740 / 1085 / 386
Регистрация: 06.08.2014
Сообщений: 5,203
Записей в блоге: 1
20.10.2015, 21:33
Цитата Сообщение от viki21 Посмотреть сообщение
А while работает пока status == 1???
while работает пока status не приравнивается к false("",null,undefined,0)

Цитата Сообщение от viki21 Посмотреть сообщение
Это такой способ создания двумерного массива?
он в одномерном массиве вставляет в каждую ячейку массив из 5 элементов, а потом их заполняет, а вообще получается двухмерный массив

Цитата Сообщение от viki21 Посмотреть сообщение
это проверка на наличие элемента в массиве? тогда какого?
да это проверка, есть ли элемент в массиве, причём проверка рассчитана на очень старые браузеры, а 'tktvtyn передаётся в аргументе

Цитата Сообщение от viki21 Посмотреть сообщение
f (a[i][j])
так же как с while, если значение можно приравнять к true, то приравнивается, если нет, то выкидывает false


вообще вы почти всё поняли правильно
1
0 / 0 / 0
Регистрация: 17.10.2015
Сообщений: 9
21.10.2015, 16:45  [ТС]
Цитата Сообщение от BANO Посмотреть сообщение
while работает пока status не приравнивается к false("",null,undefined,0)


он в одномерном массиве вставляет в каждую ячейку массив из 5 элементов, а потом их заполняет, а вообще получается двухмерный массив


да это проверка, есть ли элемент в массиве, причём проверка рассчитана на очень старые браузеры, а 'tktvtyn передаётся в аргументе


так же как с while, если значение можно приравнять к true, то приравнивается, если нет, то выкидывает false


вообще вы почти всё поняли правильно
Спасибо. А когда оно будет true? когда по этим индексам содержится любой элемент?
По проверке вообще не понятно, передается массив на проверку, потом вызвается функция с аргументом "о", что это за аргумент? И что эта функция в целом делает, возвращает количество непустых элементов или проверяет на кокой то конкретный?

Добавлено через 1 час 6 минут
Еще такой момент, где поставить точку останова чтобы посмотреть пошагово работу скрипта? На onload не получается(
0
Ренегат
Эксперт HTML/CSS
 Аватар для BANO
1740 / 1085 / 386
Регистрация: 06.08.2014
Сообщений: 5,203
Записей в блоге: 1
21.10.2015, 18:37
viki21, тк онлоад срабатывает только, когда страница загрузилась

честно говоря я знаю только 1 способ, через каждую строчку ставить
JavaScript
1
debug;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.10.2015, 18:37
Помогаю со студенческими работами здесь

Что делают эти функции?
есть хтмл код. &lt;div id=&quot;page-wrapper&quot;&gt;&lt;a href=&quot;https://plus.google.com/105950228336003214682&quot; rel=&quot;publisher&quot; a=&quot;&quot;&gt; ...

Что делают функции StrToFloat, FloatToStr
Что такое StrToFloat и FloatToStr?

Что делают функции GetMessageMap и GetThisMessageMap?
Пишу пояснительную записку к курсовому проекту - описание классов программы, диаграмма и т.д. Заметил, что на диаграмме, построенной Visual...

Что делают функции int(), float()?
Добрый день. Неоднократно встречал функции вида int(), float() и т.д. Вопрос - что они делаю и зачем они нужны. Спасибо!

Подскажите что делают эти функции
ifstream fin(filename, ios::out); #define MAX_WORD 1000 char buffer; fin &gt;&gt; buffer; len = strlen(buffer);заранее спасибо, очень...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru