AMX MOD X
Воскресенье, 11.01.2026, 14:29:26



Приветствую Вас Гость | RSS
[ Главная ] [ Вопросы по pawn-lang.pdf - AMX Mod X Форум ] [ Регистрация ] [ Вход ]
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]

Вниманию участников! Данный форум теперь является архивом и вскором времени здесь нельзя будет создавать новых тем! Просьба всем для общения и создания новых тем перейти на наш новый форум: http://amxmodx.su/

  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: slogic, AlMod  
Вопросы по pawn-lang.pdf
HatebreederДата: Четверг, 20.11.2008, 21:17:43 | Сообщение # 1
Подполковник
Группа: Пользователи
Сообщений: 120
Репутация: 0
Статус: Не в сети
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
Репутация: 70
Статус: Не в сети
там ведь ещё один раз как бы
Code
return a + b


http://romanov4400.mybrute.com
 
HatebreederДата: Четверг, 20.11.2008, 21:31:42 | Сообщение # 3
Подполковник
Группа: Пользователи
Сообщений: 120
Репутация: 0
Статус: Не в сети
Вот что получилось :(
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
Репутация: 70
Статус: Не в сети
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
Репутация: 0
Статус: Не в сети
Ну вот я и говорю. Опять опечатка там, должно быть 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
Репутация: 70
Статус: Не в сети
Там не должно быть i <= n
Просто 5-тое число Фибоначи равно 5 :)


http://romanov4400.mybrute.com

Сообщение отредактировал PomanoB - Четверг, 20.11.2008, 21:46:29
 
HatebreederДата: Четверг, 20.11.2008, 21:51:39 | Сообщение # 7
Подполковник
Группа: Пользователи
Сообщений: 120
Репутация: 0
Статус: Не в сети
Понял. Проблема решена. Прошу больше по ней неотписываться.
Следующая проблема:
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
Репутация: 70
Статус: Не в сети
Он отнимет их числовое представление

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
Репутация: 2
Статус: Не в сети
Quote (PomanoB)
Он отнимет их числовое представление

http://ru.wikipedia.org/wiki/ASCII


Пригодилось ...


=\

Сообщение отредактировал F4RR3LL - Четверг, 20.11.2008, 22:47:10
 
HatebreederДата: Пятница, 21.11.2008, 00:30:32 | Сообщение # 10
Подполковник
Группа: Пользователи
Сообщений: 120
Репутация: 0
Статус: Не в сети
Quote
Он отнимет их числовое представление
http://ru.wikipedia.org/wiki/ASCII

Ниче из того что там написано не понял:
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
Репутация: 70
Статус: Не в сети
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
Репутация: 0
Статус: Не в сети
Значт индекс а=1. Или нет?

Добавлено (2008-11-21, 10:00 Pm)
---------------------------------------------
Видимо статья рассчитана, что я пойму это со временем, т.к. там постоянно ссылки на 90-100е страницы.

 
PomanoBДата: Пятница, 21.11.2008, 22:04:55 | Сообщение # 13
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Репутация: 70
Статус: Не в сети
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
Репутация: 16
Статус: Не в сети
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
Репутация: 0
Статус: Не в сети
Спасибо, 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
 
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

AMX Mod X Russian Community © 2006-2026