<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; AHK: Склонение слова в зависимости от числа]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=11312&amp;type=atom" />
	<updated>2016-02-11T18:01:22Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=11312</id>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Склонение слова в зависимости от числа]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=101025#p101025" />
			<content type="html"><![CDATA[<p>Да, словарь будет. Простите за то что сразу неверно изложил свои мысли. И огромное спасибо за помощь!</p>]]></content>
			<author>
				<name><![CDATA[tuma4ok]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=32022</uri>
			</author>
			<updated>2016-02-11T18:01:22Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=101025#p101025</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Склонение слова в зависимости от числа]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=101016#p101016" />
			<content type="html"><![CDATA[<p>Значит &quot;словарь&quot; всё-таки будет, но число слов невелико.<br />Я как-то так себе представляю:</p><div class="codebox"><pre><code>рубль := [&quot;рубль&quot;,&quot;рубля&quot;,&quot;рублей&quot;]
доллар := [&quot;доллар&quot;,&quot;доллара&quot;,&quot;долларов&quot;]
фунт := [&quot;фунт&quot;,&quot;фунта&quot;,&quot;фунтов&quot;]

number := 100500
MsgBox, % &quot;Ваша зарплата&quot; &quot; &quot; number &quot; &quot; NumberEnd(number, рубль)
Return

NumberEnd(number, titles)
{
StringRight, x, number, 1
end := x=1 ? 1 : x&gt;=2 &amp;&amp; x&lt;=4 ? 2 : (x&gt;=5 &amp;&amp; x&lt;=9) || x=0 ? 3 :
StringRight, x, number, 2
If (x&gt;=11) &amp;&amp; (x&lt;=14)
end := 3
Return titles[end]
}</code></pre></div>]]></content>
			<author>
				<name><![CDATA[ypppu]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=5974</uri>
			</author>
			<updated>2016-02-11T12:26:15Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=101016#p101016</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Склонение слова в зависимости от числа]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=101003#p101003" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>MsgBox % NumberEnd(21, [&quot;лодка&quot;,&quot;лодки&quot;,&quot;лодок&quot;])
 
NumberEnd(n, words) { 
	return words[mod(n, 100) &gt; 4 &amp;&amp; mod(n, 100) &lt; 20 ? 3 
		: mod(n, 10) = 0 ? 3 : mod(n, 10) = 1 ? 1 
		: mod(n, 10) &lt; 5 ? 2 : 3] 
}</code></pre></div><p>Или аналог php:<br /></p><div class="codebox"><pre><code>
NumberEnd(n, words) {
    return words[(m := mod(n, 100)) &gt; 4 &amp;&amp; m &lt; 20 ? 3 
			: [3, 1, 2, 2, 2, 3][(m := mod(m, 10) + 1) &gt; 6 ? 6 : m]] 
}
</code></pre></div>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2016-02-10T21:21:12Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=101003#p101003</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Склонение слова в зависимости от числа]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=101002#p101002" />
			<content type="html"><![CDATA[<p>Прилагаю функцию написанную на PHP.<br /></p><div class="codebox"><pre><code>
function NumberEnd($number, $titles) {
    $cases = array (2, 0, 1, 1, 1, 2);
    return $titles[ ($number%100&gt;4 &amp;&amp; $number%100&lt;20)? 2 : $cases[min($number%10, 5)] ];
}
</code></pre></div><p>В первом параметре <strong>$number</strong> задается число к которому склоняем.<br />Во втором параметре <strong>$titles</strong> задается массив со словами. (Как я писал выше. Пример: палец, пальца, пальцев)<br />В этой строке: <br /></p><div class="codebox"><pre><code>$cases = array (2, 0, 1, 1, 1, 2);</code></pre></div><p>Как я понял выбирается падеж. (Начала массива не с 1, а с 0)</p><p>Данная строка получает остаток от деления (символ % делит и возвращает остаток от деления)<br /></p><div class="codebox"><pre><code>$number%100</code></pre></div>]]></content>
			<author>
				<name><![CDATA[tuma4ok]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=32022</uri>
			</author>
			<updated>2016-02-10T17:55:13Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=101002#p101002</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Склонение слова в зависимости от числа]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=101001#p101001" />
			<content type="html"><![CDATA[<p><strong>ypppu</strong>, Я же говорил, окончания дописываются. Для винта берем основу за &quot;винт&quot;, для заяц - &quot;за&quot;, для пальца - &quot;пал&quot;. Или же можно задать эти значения, то есть они передаются в массиве в функцию. Они должны быть в следующем порядке: заяц, зайца, зайцев; винт, винта, винтов; палец, пальца, пальцев.</p>]]></content>
			<author>
				<name><![CDATA[tuma4ok]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=32022</uri>
			</author>
			<updated>2016-02-10T17:47:39Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=101001#p101001</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Склонение слова в зависимости от числа]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=100994#p100994" />
			<content type="html"><![CDATA[<p>Как скрипт может знать правила для всех слов? Словарь писать?<br /></p><div class="quotebox"><blockquote><p>винт - винта<br />заяц - зайца<br />палец - пальца</p></blockquote></div>]]></content>
			<author>
				<name><![CDATA[ypppu]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=5974</uri>
			</author>
			<updated>2016-02-10T14:29:40Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=100994#p100994</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Склонение слова в зависимости от числа]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=100993#p100993" />
			<content type="html"><![CDATA[<p>Да, про 21 лодку я ступил. Но это не главное, такое возможно. На PHP у меня есть эта функция и она работает корректно. А вот на AutoHotkey не могу найти, а очень нужно.<br />Нужно для всех слов. В функцию будет передаваться массив с окончаниями. Например запрос функции должен выглядеть так:<br /></p><div class="codebox"><pre><code>
EndWord(&quot;лодк&quot;, Array(&quot;а&quot;,&quot;и&quot;,&quot;ок&quot;), 2)
</code></pre></div><p><strong>лодк</strong> - начало слова к которому потом добавится окончание.<br /><strong>Array(&quot;а&quot;,&quot;и&quot;,&quot;ок&quot;)</strong> - перечень последовательных окончаний.<br /><strong>2</strong> - к какому числу нужно склонить.</p>]]></content>
			<author>
				<name><![CDATA[tuma4ok]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=32022</uri>
			</author>
			<updated>2016-02-10T14:19:43Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=100993#p100993</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Склонение слова в зависимости от числа]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=100992#p100992" />
			<content type="html"><![CDATA[<p>Хм, а разве такое возможно? Или нужно конкретно для лодки?<br />P. S.: 21 лод<span class="bbu">ка</span>.</p>]]></content>
			<author>
				<name><![CDATA[ypppu]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=5974</uri>
			</author>
			<updated>2016-02-10T13:42:06Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=100992#p100992</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[AHK: Склонение слова в зависимости от числа]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=100991#p100991" />
			<content type="html"><![CDATA[<p>Здравствуйте. У меня возник вопрос как просклонять слово в зависимости от его количества. Например:<br /></p><div class="quotebox"><blockquote><p>1 лодка<br />2 лодки<br />5 лодок<br />11 лодок<br />21 лодка</p></blockquote></div><p>Пробовал переписать функцию с PHP на AutoHotKey, но к сожалению ничего не вышло. Надеюсь на вашу сообразительность, ум и помощь.<br />Заранее спасибо!</p>]]></content>
			<author>
				<name><![CDATA[tuma4ok]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=32022</uri>
			</author>
			<updated>2016-02-10T13:12:24Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=100991#p100991</id>
		</entry>
</feed>
