|
Вопросы по pawn-lang.pdf
|
|
| Hatebreeder | Дата: Четверг, 20.11.2008, 21:17:43 | Сообщение # 1 |
 Подполковник
Группа: Пользователи
Сообщений: 120
Статус: Не в сети
| Code fibonacci(n) { assert n > 0 new a = 0, b = 1 for (new i = 2; i < n; i++) { new c = a + b a = b b = c } return a + b } i++ в конце каждого loop увеличивается на один, тем не менее цикл должен выполняться 4 раза в отличие от 3х, либо там i <= n либо я чего-то непонимаю.Добавлено (2008-11-20, 9:17 Pm) ---------------------------------------------
Quote and the sequence is 1, 1, 2, 3, 5, 8, 13, 21,... (every next value is the sum of its two predecessors).
Сообщение отредактировал Hatebreeder - Четверг, 20.11.2008, 21:13:58 |
| |
|
|
| PomanoB | Дата: Четверг, 20.11.2008, 21:22:21 | Сообщение # 2 |
 Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Статус: Не в сети
| там ведь ещё один раз как бы
http://romanov4400.mybrute.com
|
| |
|
|
| Hatebreeder | Дата: Четверг, 20.11.2008, 21:31:42 | Сообщение # 3 |
 Подполковник
Группа: Пользователи
Сообщений: 120
Статус: Не в сети
| Вот что получилось n=5 i=4 c=3 a=2 b=3 i=5 быть не может И то есть выводится a+b=5 Добавлено (2008-11-20, 9:31 Pm) --------------------------------------------- Вот сначала: n=5 i=2 i=3 c=1 с=2 a=1 a=1 b=1 b=2
|
| |
|
|
| PomanoB | Дата: Четверг, 20.11.2008, 21:37:31 | Сообщение # 4 |
 Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Статус: Не в сети
| Code n=5
i=2 { c=0+1=1 a=1 b=1 } i=3 { c=1+1=2 a=1 b=2 } i=4 { c=1+2=3 a=2 b=3 }
return a+b=2+3=5
http://romanov4400.mybrute.com
Сообщение отредактировал PomanoB - Четверг, 20.11.2008, 21:37:51 |
| |
|
|
| Hatebreeder | Дата: Четверг, 20.11.2008, 21:42:54 | Сообщение # 5 |
 Подполковник
Группа: Пользователи
Сообщений: 120
Статус: Не в сети
| Ну вот я и говорю. Опять опечатка там, должно быть i <= n. Иначе выходит что вводишь пять и выдает printf "The value of Fibonacci number %d is %d\n", v <ввели 5>, fibonacci(v) <тоже 5>. Спасибо.
|
| |
|
|
| PomanoB | Дата: Четверг, 20.11.2008, 21:46:22 | Сообщение # 6 |
 Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Статус: Не в сети
| Там не должно быть i <= n Просто 5-тое число Фибоначи равно 5
http://romanov4400.mybrute.com
Сообщение отредактировал PomanoB - Четверг, 20.11.2008, 21:46:29 |
| |
|
|
| Hatebreeder | Дата: Четверг, 20.11.2008, 21:51:39 | Сообщение # 7 |
 Подполковник
Группа: Пользователи
Сообщений: 120
Статус: Не в сети
| Понял. Проблема решена. Прошу больше по ней неотписываться. Следующая проблема: Code if (’a’ <= string[index] <= ’z’) string[index] = (string[index] - ’a’ + 13) % 26 + ’a’ else if (’A’ <= string[index] <= ’Z’) string[index] = (string[index] - ’A’ + 13) % 26 + ’A’ Как это? Он буквы чтоли отнимает b-a?
|
| |
|
|
| PomanoB | Дата: Четверг, 20.11.2008, 21:53:05 | Сообщение # 8 |
 Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Статус: Не в сети
| Он отнимет их числовое представление http://ru.wikipedia.org/wiki/ASCII
http://romanov4400.mybrute.com
Сообщение отредактировал PomanoB - Четверг, 20.11.2008, 21:57:09 |
| |
|
|
| F4RR3LL | Дата: Четверг, 20.11.2008, 22:46:04 | Сообщение # 9 |
 Полковник
Группа: Скриптеры
Сообщений: 153
Статус: Не в сети
| Пригодилось ...
=\
Сообщение отредактировал F4RR3LL - Четверг, 20.11.2008, 22:47:10 |
| |
|
|
| Hatebreeder | Дата: Пятница, 21.11.2008, 00:30:32 | Сообщение # 10 |
 Подполковник
Группа: Пользователи
Сообщений: 120
Статус: Не в сети
| Ниче из того что там написано не понял: new weird[6] Quote weird[0] = 68 weird[1] = 65 weird[2] = 73 weird[3] = 86 weird[4] = 68 weird[5] = 0 //This will set the variable "weird" to the string "DAVID". Должно получиться что-то вроде этого? Я полагал что в куске кода который я тут представил - алфавит (англ) + символ 0. 13 означает поворот текста, а статья мне зачем? Даже если и так, то получается. Возьмем d(68) или v(73) которые получается в разных частях алфавита. Все равно остаток от деления взять никак, поскольку числитель меньше выходит. Поэтому мне кажется что всетаки там идет индекс букв по номеру а(1), b(2) , хотя тебе конечно видней, но чтото я не совсем понимаю. Ладно может позже разберусь если что.
Сообщение отредактировал Hatebreeder - Пятница, 21.11.2008, 00:32:13 |
| |
|
|
| PomanoB | Дата: Пятница, 21.11.2008, 21:42:48 | Сообщение # 11 |
 Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Статус: Не в сети
| Quote (Hatebreeder) if (’a’ <= string[index] <= ’z’) Если код буквы больше кода а и меньше кода z Quote (Hatebreeder) string[index] = (string[index] - ’a’ + 13) % 26 + ’a’ Проводятся мат. действия над кодом буквы: Вычисляется смещение от начала, ставится на это смещение от середины, если вышли за пределы алфавита берём остаток, прибавляется код а чтобы выйти на диапазон букв Quote (Hatebreeder) else if (’A’ <= string[index] <= ’Z’) string[index] = (string[index] - ’A’ + 13) % 26 + ’A’ Тоже самое над верхним регистром
http://romanov4400.mybrute.com
Сообщение отредактировал PomanoB - Пятница, 21.11.2008, 21:43:30 |
| |
|
|
| Hatebreeder | Дата: Пятница, 21.11.2008, 22:00:34 | Сообщение # 12 |
 Подполковник
Группа: Пользователи
Сообщений: 120
Статус: Не в сети
| Значт индекс а=1. Или нет? Добавлено (2008-11-21, 10:00 Pm) --------------------------------------------- Видимо статья рассчитана, что я пойму это со временем, т.к. там постоянно ссылки на 90-100е страницы.
|
| |
|
|
| PomanoB | Дата: Пятница, 21.11.2008, 22:04:55 | Сообщение # 13 |
 Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Статус: Не в сети
| Code if (’a’ <= string[index] <= ’z’) string[index] = (string[index] - ’a’ + 13) % 26 + ’a’ else if (’A’ <= string[index] <= ’Z’) string[index] = (string[index] - ’A’ + 13) % 26 + ’A’ Какой индекс у а из этого примера не видно, тк неизвестно что за строка, да и неважно какой там индекс
http://romanov4400.mybrute.com
|
| |
|
|
| DaTa | Дата: Пятница, 21.11.2008, 23:43:07 | Сообщение # 14 |
|
Генерал-полковник
Группа: Cупер-модеры
Сообщений: 1025
Статус: Не в сети
| http://ru.wikipedia.org/wiki/ASCII В контре вроде используется UTF-8, но если первый бит байта нулевой, то этот символ является ASCII. Представление ASCII в компьютерах На подавляющем большинстве современных компьютеров минимально адресуемая единица памяти — 8-битный байт, поэтому там используются 8-битные, а не 7-битные символы. Обычно символ ASCII расширяют до 8 бит, просто добавляя 1 нулевой бит в качестве старшего. | | .0 | .1 | .2 | .3 | .4 | .5 | .6 | .7 | .8 | .9 | .A | .B | .C | .D | .E | .F | | 0. | NUL | SOH | STX | ETX | EOT | ENQ | ACK | BEL | BS | TAB | LF | VT | FF | CR | SO | SI | | 1. | DLE | DC1 | DC2 | DC3 | DC4 | NAK | SYN | ETB | CAN | EM | SUB | ESC | FS | GS | RS | US | | 2. | | ! | " | # | $ | % | & | ' | ( | ) | * | + | , | — | . | / | | 3. | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | : | ; | < | = | > | ? | | 4. | @ | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | | 5. | P | Q | R | S | T | U | V | W | X | Y | Z | [ | \ | ] | ^ | _ | | 6. | ` | a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | | 7. | p | q | r | s | t | u | v | w | x | y | z | { | | | } | ~ | DEL | В этой таблице над колонками записана первая цифра шестнадцатеричного числа, слева от ряда - вторая. Допустим, мы хотим узнать код символа 'a'. Смотрим где он располагается в таблице - сверху ".1", слева "6.", соединяем эти числа, у нас выходит 61, но это не десятеричное число, а шестнадцатеричное. Для того что-бы перевести в десятичное или двоичное(если в уме не умеете), в винде открываете калькулятор(Пуск->Выполнить...->calc->OK), выбираете меню Вид->Инженерный. Ставите левый верхний переключатель на Hex, вводите число, ставите переключатель на Dec, для десятичного отображения, или на Bin, для двоичного отобр., у нас выходит 97(Dec) или 1100001(Bin). Хочу заметить, что буквы размещены в алфавитном порядке, т.е. каждая следующая буква больше предыдущей на 1. И еще: маленькие буквы('a'..'z') отличаются от больших ('A'..'Z') лишь установленным третьим битом ( a= 0110 0001 A= 0100 0001 ).Добавлено (2008-11-21, 11:43 Pm) --------------------------------------------- В pawn для хранения одного символа используется целая ячейка(под SourceMM это исправлено - там используется 2 байта), на 32й системах ячейка занимает 4 байта, на 64 - 8 байт. Даже если вы используете в блокноте UTF-8 - все равно для каждого байта используется целая ячейка.
|
| |
|
|
| Hatebreeder | Дата: Воскресенье, 23.11.2008, 14:16:26 | Сообщение # 15 |
 Подполковник
Группа: Пользователи
Сообщений: 120
Статус: Не в сети
| Спасибо, DaTa, понятней некуда. Вот еще: Code print "Give a date (dd-mm-yyyy): " d = getvalue(_, ’-’, ’/’) m = getvalue(_, ’-’, ’/’) y = getvalue() Это я так понимаю _ - это мы присваиваем, '-' этот знак мы пропускаем, '/' - выходим. Правильно? P.S. на alliedmodders написано, что сначала надо читать основы amxmodx скриптинга, а потом уже это и то при желании, т.е. данная статья предполагает уже какой-то опыт (a little bit advanced).
Сообщение отредактировал Hatebreeder - Воскресенье, 23.11.2008, 14:19:25 |
| |
|
|