Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
21 / 21 / 21
Регистрация: 28.01.2011
Сообщений: 72

"Поиск слов" из книги Энди Харриса

16.03.2012, 18:33. Показов 1713. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
wordFind.html
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<!doctype html public "-//W3C//DTD HTML 4.0 //EN">
<html>
<head>
<title>Word Puzzle Maker</title>
</head>
<body>
<center>
<h1>Word Puzzle Maker</h1>
<form action="wordFind.php" method="post">
<h3>Puzzle name</h3>
<input type="text" name="name" value="Vampire">
height <input type="text" name="height" value="10" size="5">
width <input type="text" name="width" value="10" size="5">
<br><br>
<h3>Word List</h3>
<textarea rows=10 cols=60 name="wordList"></textarea>
<br><br>
Please enter one word per row, no spaces
<br>
<input type="submit" value="make puzzle">
</form>
</center>
</body>
</html>
wordFind.php
PHP
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
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
<html>
<head>
<title>Word Find</title>
</head>
<body>
<?php
if ($wordList==NULL){
//создаем
    $word=array("ANDY","HEATHER", "LIZ", "MATT", "JACOB");
    $boardData=array(
        width=>10,
        height=>10,
        name=>"Generic Puzzle");
    $boardData=array(
        width=>$width,
        height=>$height,
        name=>$name);
//пытаемся получить список слов из полученных данных
    if (parseList()==TRUE){
        $legalBoard=FALSE;
        //продолжаем пытаться построить поле до удачного результата
        while ($legalBoard==FALSE){
            clearBoard();
            $legalBoard=fillBoard();
        }//завершение цикла
        //создаем решение
        $key=$board;
        $keyPuzzle=makeBoard($key);
        addFoils();
        $puzzle=makeBoard($board);
        //выводит страницу результатов
        printPuzzle();
    } //завершение if для проанализированного списка
} //завершение if для проверки существования списка слов
 
function parseList(){
    //получает список слов, создает из него массив слов
    //или возращает false, если это невозможно
    global $word, $wordList, $boardData;
    $itWorked=TRUE;
    //переведем весь список слов в верхний регистр
    $wordList=strtouppper($wordList);
    //разделим список слов на массив
    $word=split("\n", $wordList);
    foreach($word as $currentWord){
        //уберем "хвостовые" символы новой строки
        $currentWord=rtrim($currentWord);
        //остановимся, если какое-то из слов слишком длинное для головоломки
        if ((strLen($currentWord)>$boardData["width"])&&
            (strLen($currentWord)>$boardData["height"])){
            print "$currentWord is too long for puzzle";
            $itWorked=FALSE;
        } //завершение if
    } //завершение цикла foreach
    return $itWorked;
} //завершение parseList
 
function clearBoard(){
    //создадим поле с точкой (.) в каждой ячейке
    global $board, $boardData;
    for ($row=0; $row<$boardData["height"]; $row++){
        for ($col=0; $col<$boardData["width"]; $col++){
            $board[$row][$col]=".";
        }
    }
}
 
function fillBoard() {
    //заполнить поле, вызывая функцию addWord() для каждого слова списка или вернуть FALSE в случае неудачи
    global $word;
    $direction=array("N", "S", "E", "W");
    $itWorked=TRUE;
    $counter=0;
    $keepGoing=TRUE;
    while($keepGoing){
        $dir=rand(0,3);
        $result=addWord($word[$counter], $direction[$dir]);
        if ($result==FALSE){
            print "failed to place $word[$counter]";
            $keepGoing=FALSE;
            $itWorked=FALSE;
        }
        $counter++;
        if ($counter>=count($word)){
            $keepGoing=FALSE;
        }
    }
    return $itWorked;
}
 
function addWord($theWord, $dir){
    //попытаемся добавить слово на поле или вернем false, если попытка не удалась
    global $board, $boardData;
    //удалим замыкающие символы
    $theWord=rtrim($theWord);
    $itWorke=TRUE;
    switch ($dir) {
        case "E":
        //колонки от 0 до ширины поля - ширина слова
        //строки от 0 до высоты поля
            $newCol=rand(0, $boardData["width"]-1-strlen($theWord));
            $newRow=rand(0, $boardData["height"]-1);
            for ($i=0; $i<strlen($theWord); $i++){
                //новый символ, та же строка, начальная колонка +$i
                $boardLetter=$board[$newRow][$newCol+$i];
                $wordLetter=substr($theWord, $i, 1);
                //проверяем, свободно ли значение текущей ячейки поля
                if (($boardLetter==$wordLetter) || ($boardLetter==".")){
                    $board[$newRow][$newCol+$i]=$wordLetter;
                } else {
                    $itWorked=False;
                }
            }
            break;
        case "W":
            //колонка от ширины слова до ширины поля
            //строка от 0 до высоты поля
            $newCol=rand(strlen($theWord), $boardData["width"]-1);
            $newRow=rand(0, $boardData["height"]-1);
            print "west:\tRow: $newRow\tCol: $newCol<br>\n";
            for ($i=0; $i<strlen($theWord); $i++) {
                //проверим, можно ли продвинуться
                $boardLetter=$board[$newRow][$newCol-$i];
                $wordLetter=substr($theWord, $i, 1);
                if (($boardLetter==wordLetter) ||
                    ($boardLetter==".")) {
                    $board[$newRow][$newCol-$i]=$wordLetter;
                } else {
                    $itWorked=FALSE;
                }
            }
            break;
        case "S":
            //колонка от 0 до ширины поля
            //строка от 0 до высоты поля - длина слова
            $newCol=rand(0, $boardData["width"]-1);
            $newRow=rand(0, $boardData["height"]-1-strlen($theWord));
            print "south:\tRow: $newRow\tCol: $newCol<br>\n";
            for ($i=0; $i<strlen($theWord); $i++) {
                //проверим, можно ли продвинуться
                $boardLetter=$board[$newRow+$i][$newCol];
                $wordLetter=substr($theWord, $i, 1);
                if (($boardLetter==$wordLetter) || 
                    ($boardLetter==".")) {
                    $board[$newRow+$i][$newCol]=$wordLetter;
                } else {
                    $itWorked=FALSE;
                }
            }
            break;
        case "N":
            //колонка от 0 до ширины поля
            //строка от длины слова до высоты поля
            $newCol=rand(0, $boardData["width"]-1);
            $newRow=rand(strlen($theWord), $boardData["height"]-1);
            for ($i=0; $i<strlen($theWord); $i++) {
                //проверим, можно ли продвинуться
                $boardLetter=$board[$newRow-$i][$newCol];
                $wordLetter=substr($theWord, $i, 1);
                if (($boardLetter==$wordLetter) ||
                    ($boardLetter==".")) {
                    $board[$newRow-$i][$newCol]=$wordLetter;
                } else {
                    $itWorked=FALSE;
                }
            }
            break;
    }
    return $itWorked;
}
 
function makeBoard($theBoard) {
    //использую заданный массив доски, вернуть таблицу HTML
    global $boardData;
    $puzzle="";
    $puzzle.="<table border=0>\n";
    for ($row=0; $row<$boardData["height"]; $row++) {
        $puzzle.="<tr>\n";
        for ($col=0; $col<$boardData["width"]; $col++) {
            $puzzle.=" <td width=15>{$theBoard[$row][$col]}</td>\n";
        }
        $puzzle.="</tr>\n";
    }
    $puzzle.="</table>\n";
    return $puzzle;
}
 
function addFoils() {
    //добавить случайные символы на доску
    global $board, $boardData;
    for ($row=0; $row<$boardData["height"]; $row++) {
        for ($col=0; $col<$boardData["width"]; $col++) {
            if ($board[$row][$col]==".") {
                $newLetter=rand(65, 90);
                $board[$row][$col]=chr($newLetter);
            }
        }
    }
}
 
function printPuzzle() {
    //отобразить страницу, содержащую головоломку, пользователю
    global $puzzle, $word, $keyPuzzle, $boardData;
    //отобразить головоломку
    print <<<HERE
        <center>
        <h1>{$boardData["name"]}</h1>
        $puzzle
        <h3>Word List</h3>
        <table border=0>
    HERE;
    //отобразить список слов
    foreach ($word as $theWord) {
        print "<tr><td>$theWord</td></tr>\n";
    }
    print "</table>\n";
    $puzzleName=$boardData["name"];
    //отобразить форму запроса ключа ответа
    //послать ключ ответа этой форме (ловкий ход!)
    print <<<HERE
        <br><br><br><br><br><br><br><br>
        <form action="wordFindKey.php" method="post">
            <input type="hidden" name="key" value="$keyPuzzle">
            <input type="hidden" name="puzzleName" value="$puzzleName">
            <input type="submit" value="show answer key">
        </form>
        </center>
    HERE;
}
    
?>
</body>
</html>
wordFindKey.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<!doctype html public "-//W3C//DTD HTML 4.0 //EN">
<html>
<head>
<title>Word Find Answer Key</title>
</head>
<body>
<?php
print <<<HERE
    <center>
    <h1>$puzzleName Answer key</h1>
    $key
    </center>
HERE;
?>
</body>
</html>
Проблема в том, что выдает ошибку в файле wordFind.php на строку 217... сравнивая с книгой, ошибок не нашел
Может быть у кого-нибудь выдаст ошибку на другую строку или кто-нибудь делал эту задачу и есть готовое решение? )
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.03.2012, 18:33
Ответы с готовыми решениями:

Энди
Программа, вычисляющая для заданного полинома n-й степени с вещественными коэффициентами действительные и мнимые части корней полинома.

Детектор Харриса
Кто знаком с этой темой помогите разобраться ... Не могу понять алгоритм поиска особых точек ... Если у кого есть...

Сравнить ФИО из книги 1 и книги 2, и если совпадают, то в столбец А книги 1, подставить данные из столбца В книги 2
Добрый день! Подскажите, как сделать-есть 2 книги. Нужно сравнить фамилии из книги 1 и книги 2 и если ФИО совпадает, то в столбец А книги...

5
25 / 26 / 4
Регистрация: 12.12.2011
Сообщений: 197
16.03.2012, 21:07
Попробуй заменить 217 строку на:
PHP
1
$puzzleName=$boardData[name];
В приведённом на сайте коде это строка 219
Т.е. проблема скорее всего с кавычками. Как её решить - не знаю.
0
21 / 21 / 21
Регистрация: 28.01.2011
Сообщений: 72
16.03.2012, 21:08  [ТС]
хм, а теперь в 236 строке ошибка, хотя в коде их всего 234
0
25 / 26 / 4
Регистрация: 12.12.2011
Сообщений: 197
16.03.2012, 21:15
на последний знак кода поставь указатель мыши и жми на Дэль, пока ошибка не пропадёт

Добавлено через 2 минуты
Сейчас посмотрел, у меня тоже ошибка, правда у меня не показывает, что в строке 236. Есть вариант во всём коде заменить $puzzleName=$boardData["name"]; на $puzzleName=$boardData[name]; или на $puzzleName=$boardData['name'];
0
21 / 21 / 21
Регистрация: 28.01.2011
Сообщений: 72
16.03.2012, 21:32  [ТС]
без изменений...
0
25 / 26 / 4
Регистрация: 12.12.2011
Сообщений: 197
16.03.2012, 21:53
По-моему, у тебя ошибка начиная со строки 205 до 211, вот здесь:
PHP
1
2
3
4
5
6
7
print <<<HERE
                <center>
                <h1>{$boardData["name"]}</h1>
                $puzzle
                <h3>Word List</h3>
                <table border=0>
        HERE;
Я сделал так:
PHP
1
2
3
4
5
6
7
print ("<<<HERE
                <center>
                <h1>{$boardData["name"]}</h1>
                $puzzle
                <h3>Word List</h3>
                <table border=0>
        HERE");
Потом не забудь вернуть строку 217 в $puzzleName=$boardData["name"]; Но у меня всё равно в конце файла показывает ошибку.

Добавлено через 7 минут
Замени строки 220-229 на
PHP
1
2
3
4
5
6
7
8
9
print ("<<<HERE
                <br><br><br><br><br><br><br><br>
                <form action="wordFindKey.php" method="post">
                        <input type="hidden" name="key" value="$keyPuzzle">
                        <input type="hidden" name="puzzleName" value="$puzzleName">
                        <input type="submit" value="show answer key">
                </form>
                </center>
        HERE");
Потом замени все " в этом коде на ' и будет тогда без ошибок.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.03.2012, 21:53
Помогаю со студенческими работами здесь

Детектор Харриса Корнерса
Здравствуйте, дуброва времени суток. Помогите в реализации алгоритма &quot;поиск углов на изображении&quot;. Может у кого то есть готовый...

OpenCvSharp, детектор Харриса
Добрый день. Подскажите пожалуйста, как в opencvsharp использовать детектор Харриса? Может у кого-то есть пример кода?

Уголковый детектор Харриса
Всем привет народ нужно помощь. Нужно написать программу для поиска парных точек на 2 изображениях по методу Харриса. Если можно напишите...

Poker Dice Энди Харрис
люди помогите пожалуйста с игрой &quot;Покер с костями&quot; из учебник Харриса по сути почти все норм работает только проблема в том что условие с...

ДЗ с учебника по PHP Энди Харрис
Задание: &quot;Создайте игру Морской бой, для двух игроков за одним компьютером. Игра будет отображать сетку. Позвольте пользователю выбирать...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru