<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=50485&amp;view=findpost&amp;p=394258</guid>
        <pubDate>Fri, 02 Jul 2004 19:05:48 +0000</pubDate>
        <title>Математика</title>
        <link>https://forum.sources.ru/index.php?showtopic=50485&amp;view=findpost&amp;p=394258</link>
        <description><![CDATA[e-moe: <strong class='tag-b'>Как быстро делить/умножать числа на степень двойки?</strong><br>
<br>
Как известно, опрерации умножения и деления занимаю много машинного времени. Если требуется скорость, то целесообразно использовать логические сдвиги:<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;</div><div class="code_line">i:=i shl 1; { i:=i * 2^1}</div><div class="code_line">i:=i shl 2; { i:=i * 2^2}</div><div class="code_line">{и т.д.}</div><div class="code_line">i:=i shr 1; { i:=i div 2^1}</div><div class="code_line">i:=i shr 2; { i:=i div 2^2}</div><div class="code_line">{и т.д.}</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br>
<br>
Примечание: корректно работает только с целыми беззнаковыми типами (word, byte...)&#33;<br>
Если производить эти операции со знаковыми типами, то бит знака тоже сдвигается и в рез-те<br>
число может поменять свой знак&#33;<br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Сообщения были разделены в тему &quot;<a class='tag-url' href='http://forum.sources.ru/index.php?showtopic=89325' target='_blank'>Численные методы</a>&quot;</span></span>]]></description>
        <author>e-moe</author>
        <category>Pascal: Математика</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=50485&amp;view=findpost&amp;p=378476</guid>
        <pubDate>Fri, 11 Jun 2004 09:37:07 +0000</pubDate>
        <title>Математика</title>
        <link>https://forum.sources.ru/index.php?showtopic=50485&amp;view=findpost&amp;p=378476</link>
        <description><![CDATA[romtek: <strong class='tag-b'>Как узнать из каких цифр состоит целое число?</strong><br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">Var X : Integer;</div><div class="code_line">Begin</div><div class="code_line">&nbsp;X:=12345;</div><div class="code_line">&nbsp;Writeln(&#39;Число состоит из таких цифр:&#39;);</div><div class="code_line">&nbsp;While X &#60;&#62; 0 Do</div><div class="code_line">&nbsp;&nbsp;Begin</div><div class="code_line">&nbsp;&nbsp; Writeln(X Mod 10);</div><div class="code_line">&nbsp;&nbsp; X:=X Div 10;</div><div class="code_line">&nbsp;&nbsp;End;</div><div class="code_line">End.</div></ol></div></div></div></div>]]></description>
        <author>romtek</author>
        <category>Pascal: Математика</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=50485&amp;view=findpost&amp;p=332504</guid>
        <pubDate>Tue, 06 Apr 2004 08:15:16 +0000</pubDate>
        <title>Математика</title>
        <link>https://forum.sources.ru/index.php?showtopic=50485&amp;view=findpost&amp;p=332504</link>
        <description><![CDATA[tserega: <span class='tag-u'><strong class='tag-b'>Более быстрое разложение числа на множители.</strong></span><br>
В методе, описанном <strong class='tag-b'>romtek</strong>-ом, количество проверок пропорционально sqrt(N), т.е. для разложение числа порядка 10<sup class='tag-sup'>12</sup> потребуется около 10<sup class='tag-sup'>6</sup> операций, причем используется деление&#33;<br>
Существуют методы поиска делителей, которые справляются со своей задачей намного быстрее (без операций деления).<br>
В методе Ферма предполагается, что N - нечетное число, причем N = uv. Попробуем подобрать такие числа X и Y, что будет выполняться:<br>
N = p<sup class='tag-sup'>2</sup> - q<sup class='tag-sup'>2</sup>. Обозначим u = (p + q) / 2 и v = (p - q) / 2.<br>
Будем пытаться приблизить числа p и q с разных сторон, чтобы выполнялось N = p<sup class='tag-sup'>2</sup> - q<sup class='tag-sup'>2</sup>.<br>
Итак, сам алгоритм:<br>
* Присвоим x = 2 * trunc(sqrt(N)) + 1, y = 1, r = sqr(trunc(sqrt(N))) - N (во время выполнения алгоритма числа x, y и r будут соответствовать 2p + 1, 2q + 1 и p<sup class='tag-sup'>2</sup> - q<sup class='tag-sup'>2</sup> - N)<br>
* Если r = 0, то выполнение алгоритма заканчивается. Имеем N = ((x-y)/2)((x+y-2)/2) и (x-y)/2 - наибольши делитель числа N.<br>
* Присвоить r = r + x, x = x + 2 (шаг по x)<br>
* Присовить r = r - y, y = y - 2 (шаг по y). Делать этот шаг, пока r &gt; 0.<br>
* Перейти к проверке r = 0<br>
<br>
Так как все действия алгоритма - это сложения и вычитания, то они на компьютере выполняются очень быстро. В результате работы алгоритма будет получено одно число - наибольший делитель числа N. Замечание: данный алгоритм лучше использовать для поиска больших делителей, нежели для маленьких&#33;<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">{$N+,E+}</div><div class="code_line">Function FermaFactorization(N : Comp) : Comp;</div><div class="code_line">Var X, Y, R : Comp;</div><div class="code_line">Begin</div><div class="code_line">&nbsp;X:=2 * Trunc(Sqrt(N)) + 1;</div><div class="code_line">&nbsp;Y:=1;</div><div class="code_line">&nbsp;R:=Sqr(Trunc(Sqrt(N))) - N;</div><div class="code_line">&nbsp;While (R &#60;&#62; 0) Do</div><div class="code_line">&nbsp;&nbsp;Begin</div><div class="code_line">&nbsp;&nbsp; R:=R + X;</div><div class="code_line">&nbsp;&nbsp; X:=X + 2;</div><div class="code_line">&nbsp;&nbsp; Repeat</div><div class="code_line">&nbsp;&nbsp; &nbsp;R:=R - Y;</div><div class="code_line">&nbsp;&nbsp; &nbsp;Y:=Y + 2;</div><div class="code_line">&nbsp;&nbsp; Until R &#60;= 0;</div><div class="code_line">&nbsp;&nbsp;End;</div><div class="code_line">&nbsp;FermaFactorization:=(X - Y) / 2;</div><div class="code_line">End;</div><div class="code_line">&nbsp;</div><div class="code_line">Begin</div><div class="code_line">&nbsp;Writeln(FermaFactorization(917979909):0:0);</div><div class="code_line">End.</div></ol></div></div></div></div><br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray">PS: источник - D.E. Knuth, The Art of Computer Programming, Vol.2</span>]]></description>
        <author>tserega</author>
        <category>Pascal: Математика</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=50485&amp;view=findpost&amp;p=332363</guid>
        <pubDate>Mon, 05 Apr 2004 23:11:35 +0000</pubDate>
        <title>Математика</title>
        <link>https://forum.sources.ru/index.php?showtopic=50485&amp;view=findpost&amp;p=332363</link>
        <description><![CDATA[romtek: <strong class='tag-b'><span class='tag-u'>Как проверить простое ли число?</span></strong><br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">function isPrime(X: word): boolean;</div><div class="code_line">var</div><div class="code_line">i: integer;</div><div class="code_line">Begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; isPrime:=false;</div><div class="code_line">&nbsp;&nbsp; &nbsp; if not odd(x) and (x&#60;&#62;2) { проверяем на чётность &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;then exit;</div><div class="code_line">&nbsp;&nbsp; &nbsp; i:=3;</div><div class="code_line">&nbsp;&nbsp; &nbsp; while i &#60;= sqrt(x) do { проверяем только нечётные }</div><div class="code_line">&nbsp;&nbsp; &nbsp; begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if x mod i = 0 then Exit;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;inc(i,2);</div><div class="code_line">&nbsp;&nbsp; &nbsp; end;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; isPrime:=true;</div><div class="code_line">End;</div></ol></div></div></div></div><br>
<br>
<strong class='tag-b'><span class='tag-u'>Разложение числа на множители</span></strong><br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">procedure Factorization(x: word);</div><div class="code_line">var i: word;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;procedure DivX; { делим на простое число, пока делится без остатка }</div><div class="code_line">&nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;while (x&#62;1) and (x mod i = 0) do</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; write(i:4);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; x:= x div i;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;end;</div><div class="code_line">&nbsp;end;</div><div class="code_line">&nbsp;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; i:=2;</div><div class="code_line">&nbsp;&nbsp; &nbsp; DivX;</div><div class="code_line">&nbsp;&nbsp; &nbsp; i:=3;</div><div class="code_line">&nbsp;&nbsp; &nbsp; while (i &#60; x div 2) do</div><div class="code_line">&nbsp;&nbsp; &nbsp; begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; DivX;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; inc(i,2); { &#60;=&#62; i:=i+2; только нечётные числа }</div><div class="code_line">&nbsp;&nbsp; &nbsp; end;</div><div class="code_line">&nbsp;&nbsp; &nbsp; if x&#62;1 then writeln(x:4);</div><div class="code_line">end;</div></ol></div></div></div></div><br>
<br>
<strong class='tag-b'><span class='tag-u'>Приближённое представление числа в виде дроби</span></strong><br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;</div><div class="code_line">VAR p,q,qmax:integer;</div><div class="code_line">&nbsp;&nbsp; &nbsp;d, r, min: real;</div><div class="code_line">BEGIN</div><div class="code_line">&nbsp;&nbsp; write(&#39;r, qmax=&#39;);</div><div class="code_line">&nbsp;&nbsp; readln(r, qmax); { r - не целое число, qmax - кол-во итераций (циклов) }</div><div class="code_line">&nbsp;&nbsp; p:=0; q:=1; min:=r;</div><div class="code_line">&nbsp;&nbsp; REPEAT</div><div class="code_line">&nbsp;&nbsp; &nbsp; IF p / q &#60; r</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;THEN inc(p)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ELSE inc(q);</div><div class="code_line">&nbsp;&nbsp; &nbsp; d:=abs(r-p/q);</div><div class="code_line">&nbsp;&nbsp; &nbsp; IF d &#60; min THEN</div><div class="code_line">&nbsp;&nbsp; &nbsp; BEGIN</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;min:=d;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;writeln(p:7,&#39;/&#39;,q)</div><div class="code_line">&nbsp;&nbsp; &nbsp; END</div><div class="code_line">&nbsp;&nbsp; UNTIL (q &#62;= qmax) OR (d = 0);</div><div class="code_line">&nbsp;&nbsp; readln;</div><div class="code_line">END.</div></ol></div></div></div></div><br>
<br>
<strong class='tag-b'><span class='tag-u'>Как работать с отдельными битами?</span></strong><br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">FUNCTION IsBitOn (n: word; b : BYTE): BOOLEAN; { Проверяем, установлен ли бит }</div><div class="code_line">BEGIN </div><div class="code_line">&nbsp;&nbsp; &nbsp; isBitOn:=((n SHR b) AND 1) = 1</div><div class="code_line">END;</div><div class="code_line">&nbsp;</div><div class="code_line">PROCEDURE SetBitOn (VAR n: Word; b: BYTE); { Устанавливаем бит }</div><div class="code_line">BEGIN</div><div class="code_line">&nbsp;&nbsp; &nbsp; N:= N OR (1 SHL b)</div><div class="code_line">END;</div><div class="code_line">&nbsp;</div><div class="code_line">PROCEDURE XORBit (VAR n: Word; b: BYTE); { Переключаем бит }</div><div class="code_line">BEGIN</div><div class="code_line">&nbsp;&nbsp; &nbsp; N:= N XOR (1 SHL b) END;</div></ol></div></div></div></div>]]></description>
        <author>romtek</author>
        <category>Pascal: Математика</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=50485&amp;view=findpost&amp;p=332362</guid>
        <pubDate>Mon, 05 Apr 2004 23:02:16 +0000</pubDate>
        <title>Математика</title>
        <link>https://forum.sources.ru/index.php?showtopic=50485&amp;view=findpost&amp;p=332362</link>
        <description><![CDATA[romtek: <div class='tag-align-center'><strong class='tag-b'><span class="tag-font" data-value="Times" style="font-family:Times"><span class='tag-size' data-value='16' style='font-size:16pt;'><span class="tag-color tag-color-named" data-value="blue" style="color: blue">- Математика и числа -</span></span></span></strong></div><br>
<br>
<strong class='tag-b'><span class='tag-u'>Чётность/нечётность чисел</span></strong><br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">if Odd (Number) then </div><div class="code_line">&nbsp;&nbsp;writeln (Number, &#39; нечётно&#39;)</div><div class="code_line">else</div><div class="code_line">&nbsp;&nbsp;writeln (Number, &#39; чётно&#39;)</div></ol></div></div></div></div>или<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">if Number and 1 = 0</div><div class="code_line">&nbsp;&nbsp; then writeln(Number,&#39; чётно&#39;)</div><div class="code_line">&nbsp;&nbsp; else writeln(Number,&#39; нечётно&#39;)</div></ol></div></div></div></div><br>
<strong class='tag-b'><span class='tag-u'>Делимость (кратность) чисел</span></strong><br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">if Number mod 3 = 0 then</div><div class="code_line">&nbsp;&nbsp;writeln (Number, &#39; делится на 3 без остатка&#39;);</div></ol></div></div></div></div>Делиться без остатка - означает <span class='tag-u'>кратность</span>.<br>
<br>
<strong class='tag-b'><span class='tag-u'>Наибольший Общий Делитель</span></strong> (НОД, англ. Greatest Common Divisor)<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">{ Евклид (Euclidus) }</div><div class="code_line">function GCD (A: integer; &nbsp;B: integer): integer;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp; &nbsp;while (a &#60;&#62; 0) and (b &#60;&#62; 0) do</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; if a &#62;= b then</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; a := a mod b</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; else </div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; b := b mod a;</div><div class="code_line">&nbsp;&nbsp; &nbsp;GCD := a + b; { один - ноль }</div><div class="code_line">end;</div></ol></div></div></div></div><br>
<br>
<strong class='tag-b'><span class='tag-u'>Наименьшее Общее Кратное</span></strong> (НОК, англ. Least Common Multiplier)<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">function LCM (A: integer; &nbsp;B: integer): integer; </div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; LCM := a * b div GCD (a, b)</div><div class="code_line">end;</div></ol></div></div></div></div><br>
<br>
<strong class='tag-b'><span class='tag-u'>Степень</span></strong><br>
<em class='tag-i'>Для целых чисел</em><br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">function Power(Base, N: integer): longint;</div><div class="code_line">{ Base - основание , N - степень }</div><div class="code_line">var</div><div class="code_line">&nbsp;&nbsp; Result: longint;</div><div class="code_line">&nbsp;&nbsp; i: word;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp; Result := 1; { придаём начальное значение }</div><div class="code_line">&nbsp;&nbsp; for i := 1 to N do</div><div class="code_line">&nbsp;&nbsp; &nbsp; Result := Result * Base;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; Power := Result;</div><div class="code_line">end;</div></ol></div></div></div></div><br>
<br>
<em class='tag-i'>Для вещественных чисел</em><br>
<br>
Возвести <em class='tag-i'>A</em> в степень <em class='tag-i'>N</em>. Ограничения: <span class="tag-color tag-color-named" data-value="red" style="color: red">только для <em class='tag-i'>A &gt; 0</em></span><br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">function PowerExp (A, N: real): real;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp; if A &#62; 0 then</div><div class="code_line">&nbsp;&nbsp; &nbsp; PowerExp := Exp ( N * Ln (A) )</div><div class="code_line">&nbsp;&nbsp; else </div><div class="code_line">&nbsp;&nbsp; &nbsp; PowerExp := 0;</div><div class="code_line">end;</div></ol></div></div></div></div><br>
<br>
<strong class='tag-b'><span class='tag-u'>Факториал</span></strong> ( <span class="tag-color tag-color-named" data-value="blue" style="color: blue"><strong class='tag-b'>дополнительная информация</strong></span>: <a class='tag-url' href='http://forum.sources.ru/index.php?showtopic=44800' target='_blank'>Факториал числа - N&#33;</a> )<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">function Factorial(N: word): longint;</div><div class="code_line">var</div><div class="code_line">&nbsp;&nbsp; Result: longint;</div><div class="code_line">&nbsp;&nbsp; i: word;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp; Result := 1;</div><div class="code_line">&nbsp;&nbsp; for i := 1 to N do </div><div class="code_line">&nbsp;&nbsp; &nbsp; Result := Result * N;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; Power := Result;</div><div class="code_line">end;</div></ol></div></div></div></div><br>
<br>
<em class='tag-i'>С использованием рекурсии</em><br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">function Factorial (N: word): longint;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp; if N = 0 then</div><div class="code_line">&nbsp;&nbsp; &nbsp; Factorial := 1 </div><div class="code_line">&nbsp;&nbsp; else </div><div class="code_line">&nbsp;&nbsp; &nbsp; Factorial := N * Factorial (N - 1);</div><div class="code_line">end;</div></ol></div></div></div></div><br>
<br>
<strong class='tag-b'><span class='tag-u'>Вещественный и целый типы</span></strong><br>
<strong class='tag-b'><em class='tag-i'>Round</em></strong> - Округляет значение вещественного типа до значения целого типа, округляя.<br>
<strong class='tag-b'><em class='tag-i'>Trunc</em></strong> - Округляет значение вещественного типа до значения целого типа, отбрасывая дробную часть.<br>
<strong class='tag-b'><em class='tag-i'>Frac</em></strong> - Возвращает дробную часть аргумента.<br>
<strong class='tag-b'><em class='tag-i'>Int</em></strong> - Возвращает целую часть аргумента.<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;&nbsp; var</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; r : real;</div><div class="code_line">&nbsp;&nbsp; &nbsp; begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; r := Round ( 123.456); &nbsp;{ &nbsp; &nbsp;123 }</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; r := Round ( 123.778); &nbsp;{ &nbsp; &nbsp;124 }</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; r := Trunc ( 123.456); &nbsp;{ &nbsp; &nbsp;123 }</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; r := Trunc (-123.778); &nbsp;{ &nbsp; -123 }</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; r := Frac &nbsp;( 123.456); &nbsp;{ &nbsp;0.456 }</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; r := Int &nbsp; ( 123.456); &nbsp;{ &nbsp;123.0 }</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; r := Int &nbsp; (-123.456); &nbsp;{ -123.0 }</div><div class="code_line">&nbsp;&nbsp; &nbsp; end.</div></ol></div></div></div></div><br>
<br>
<strong class='tag-b'><span class='tag-u'>Случайные числа</span></strong><br>
Процедура <strong class='tag-b'>Randomize</strong> - инициализирует генератор чисел.<br>
Функция <strong class='tag-b'>Random (N)</strong> выдает <em class='tag-i'>целочисленные</em> значения в диапазоне от <strong class='tag-b'><em class='tag-i'>0</em></strong> до <strong class='tag-b'><em class='tag-i'>N-1</em></strong> &#33;<br>
Например, чтобы сгенерировать число X в диапазоне <strong class='tag-b'><em class='tag-i'>-N..N</em></strong> , пишем так:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;&nbsp;Randomize;</div><div class="code_line">&nbsp;&nbsp;X := Random (N + 1) - 2 * N;</div></ol></div></div></div></div><br>
Если не написать сначала <strong class='tag-b'>Randomize;</strong> , то будут генерироваться одни и те же числа.]]></description>
        <author>romtek</author>
        <category>Pascal: Математика</category>
      </item>
	
      </channel>
      </rss>
	