<?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=50823&amp;view=findpost&amp;p=642534</guid>
        <pubDate>Sat, 12 Mar 2005 21:28:48 +0000</pubDate>
        <title>Задачи по строкам</title>
        <link>https://forum.sources.ru/index.php?showtopic=50823&amp;view=findpost&amp;p=642534</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">function IsPalindrom(S: string): boolean;</div><div class="code_line">var i,len: integer;</div><div class="code_line">&nbsp;&nbsp; &nbsp;pal: boolean;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; pal:=true; {считаем, что в начале у нас палиндром}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; len:=length(S);</div><div class="code_line">&nbsp;&nbsp; &nbsp; for i:=1 to (len div 2) do {проверяем до половины строки}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; if S[i]&#60;&#62;S[len-i+1] then {одинаковы ли парные символы, начиная с обоих концов строки}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;pal:=false; {мы былы не правы}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break; {выходим из цикла, не проверяя остальные символы}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; end;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; IsPalindrom:=pal</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">var Str: string;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; write(&#39;Enter string: &#39;);</div><div class="code_line">&nbsp;&nbsp; &nbsp; readln(str);</div><div class="code_line">&nbsp;&nbsp; &nbsp; writeln(&#39;Palindrom: &#39;,IsPalindrom(str));</div><div class="code_line">&nbsp;&nbsp; &nbsp; readln;</div><div class="code_line">end.</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script>]]></description>
        <author>Romtek</author>
        <category>Pascal: Структуры данных</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=50823&amp;view=findpost&amp;p=418807</guid>
        <pubDate>Tue, 03 Aug 2004 12:55:39 +0000</pubDate>
        <title>Задачи по строкам</title>
        <link>https://forum.sources.ru/index.php?showtopic=50823&amp;view=findpost&amp;p=418807</link>
        <description><![CDATA[e-moe: <strong class='tag-b'>Удаление незначащих нулей в числе.</strong><br>
Например: <strong class='tag-b'>NormalizeNumber</strong>(-00010.20000) вернет &#39;-10.2&#39;<br>
а <strong class='tag-b'>NormalizeNumber</strong>(0.0) вернет просто &#39;0&#39;.<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">function NormalizeNumber(x:real): string;</div><div class="code_line">var</div><div class="code_line">&nbsp;&nbsp;l : integer;</div><div class="code_line">&nbsp;&nbsp;s : string;</div><div class="code_line">begin</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;s:=&#39;&#39;;</div><div class="code_line">&nbsp;&nbsp;str(x:0:99,s);</div><div class="code_line">&nbsp;&nbsp;l:=Length(s);</div><div class="code_line">&nbsp;&nbsp;while s[l] in [&#39;0&#39;,&#39;.&#39;] do</div><div class="code_line">&nbsp;&nbsp; &nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;dec(l);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;if s[l]=&#39;.&#39; then</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;dec(l);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;end;</div><div class="code_line">&nbsp;&nbsp; &nbsp;end;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;NormalizeNumber:=copy(s,1,l)</div><div class="code_line">end;</div></ol></div></div></div></div>]]></description>
        <author>e-moe</author>
        <category>Pascal: Структуры данных</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=50823&amp;view=findpost&amp;p=416776</guid>
        <pubDate>Sun, 01 Aug 2004 15:47:59 +0000</pubDate>
        <title>Задачи по строкам</title>
        <link>https://forum.sources.ru/index.php?showtopic=50823&amp;view=findpost&amp;p=416776</link>
        <description><![CDATA[tserega: В функции Replace найден небольшой глюк: вызов, например Replace(&#39;I love cheese&#39;, &#39;e&#39;, &#39;ee&#39;) приведет или к зависанию, или к ошибке. Это вызвано тем, что заменяя отно &quot;е&quot; на два, длина строки увеличивается, причем подстрока &quot;е&quot; будет встречаться снова и снова.<br>
Поэтому будет разбивать строку на две части: head (где все необходимые подстроки заменены) и tail (где замену еще предстоит сделать), к которой применим функцию Replace рекурсивно.<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 Replace(Source : String; What, Repl : String) : String;</div><div class="code_line">Var P : Integer;</div><div class="code_line">&nbsp;&nbsp; &nbsp;Head, Tail : String;</div><div class="code_line">Begin</div><div class="code_line">&nbsp;If (Length(Source) &#60;= 0) Then Exit; {В пустой строке нечего менять. Это и есть &quot;якорь&quot; рекурсии}</div><div class="code_line">&nbsp;If Pos(What, Source) &#62; 0 Then {Если нашли что менять}</div><div class="code_line">&nbsp;&nbsp;Begin</div><div class="code_line">&nbsp;&nbsp; P:=Pos(What, Source);</div><div class="code_line">&nbsp;&nbsp; Delete(Source, P, Length(What));</div><div class="code_line">&nbsp;&nbsp; Insert(Repl, Source, P); {Удаляем и вставляем нужную строку (замена первой похожей подстроки)}</div><div class="code_line">&nbsp;&nbsp; Head:=Copy(Source, 1, P + Length(Repl) - Length(What)); {В этой подстроке замен больше делать не надо}</div><div class="code_line">&nbsp;&nbsp; Tail:=Copy(Source, Length(Head) + 1, Length(Source) - Length(Head)); {А здесь надо!}</div><div class="code_line">&nbsp;&nbsp; Source:=Head + Replace(Tail, What, Repl); {Рекурсивный вызов}</div><div class="code_line">&nbsp;&nbsp;End;</div><div class="code_line">&nbsp;Replace:=Source;</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(Replace(&#39;I love cheese&#39;, &#39;e&#39;, &#39;ee&#39;));</div><div class="code_line">End.</div></ol></div></div></div></div>]]></description>
        <author>tserega</author>
        <category>Pascal: Структуры данных</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=50823&amp;view=findpost&amp;p=412479</guid>
        <pubDate>Tue, 27 Jul 2004 18:59:01 +0000</pubDate>
        <title>Задачи по строкам</title>
        <link>https://forum.sources.ru/index.php?showtopic=50823&amp;view=findpost&amp;p=412479</link>
        <description><![CDATA[tserega: <span class='tag-u'><span class='tag-size' data-value='10' style='font-size:10pt;'>Задание:</span></span><br>
<br>
<span class='tag-size' data-value='10' style='font-size:10pt;'><strong class='tag-b'>Написать функцию заменяющую в заданной строке типа 1 на выражение типа 2. (Задача о замене одной подстрокм другой)</strong></span><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">Function Replace(Source : String; What, Repl : String) : String;</div><div class="code_line">Var P : Integer;</div><div class="code_line">Begin</div><div class="code_line">&nbsp;While Pos(What, Source) &#62; 0 Do</div><div class="code_line">&nbsp;&nbsp;Begin</div><div class="code_line">&nbsp;&nbsp; P:=Pos(What, Source);</div><div class="code_line">&nbsp;&nbsp; Delete(Source, P, Length(What));</div><div class="code_line">&nbsp;&nbsp; Insert(Repl, Source, P);</div><div class="code_line">&nbsp;&nbsp;End;</div><div class="code_line">&nbsp;Replace:=Source;</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(Replace(&#39;I love cheese&#39;, &#39;ve&#39;, &#39;EEEE&#39;));</div><div class="code_line">End.</div></ol></div></div></div></div>]]></description>
        <author>tserega</author>
        <category>Pascal: Структуры данных</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=50823&amp;view=findpost&amp;p=364960</guid>
        <pubDate>Mon, 24 May 2004 22:24:05 +0000</pubDate>
        <title>Задачи по строкам</title>
        <link>https://forum.sources.ru/index.php?showtopic=50823&amp;view=findpost&amp;p=364960</link>
        <description><![CDATA[romtek: <span class='tag-u'><span class='tag-size' data-value='10' style='font-size:10pt;'>Задание:</span></span><br>
<br>
<span class='tag-size' data-value='10' style='font-size:10pt;'><strong class='tag-b'>Вывести на экран слова (последовательность букв алфавита) в строке.</strong></span><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">procedure FindWords(s: string);</div><div class="code_line">Const Letters: Set Of Char = [&#39;A&#39;..&#39;Z&#39;,&#39;a&#39;..&#39;z&#39;,&#39;А&#39;..&#39;Я&#39;,&#39;а&#39;..&#39;п&#39;,&#39;р&#39;..&#39;я&#39;];</div><div class="code_line">var p,q: byte;</div><div class="code_line">&nbsp;&nbsp; &nbsp;sc : string;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;p := 1; { Проверять с 1-го символа в строке }</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;while p &#60;= length (s) do { Поиск по строке}</div><div class="code_line">&nbsp;&nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp;q := p; { Запомнить позицию p }</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;while (p &#60;= length (s)) and (s[p] in Letters) do</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;inc(p); &nbsp;{ Пока не конец строки и очередной символ является буквой, увеличивать позицию p}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;if q &#60;&#62; p then { Если позиция p сдвинута относительно q, значит найдено слово }</div><div class="code_line">&nbsp;&nbsp; &nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;sc := copy (s, q, p - q); { Вырезать слово }</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;writeln (sc); { и вывести его на экран }</div><div class="code_line">&nbsp;&nbsp; &nbsp;end;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;inc (p); { передвинув позицию p продолжить поиск по строке }</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;FindWords (&#39;abc 1a333 где34слово?&#39;)</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=50823&amp;view=findpost&amp;p=363988</guid>
        <pubDate>Sun, 23 May 2004 12:32:00 +0000</pubDate>
        <title>Задачи по строкам</title>
        <link>https://forum.sources.ru/index.php?showtopic=50823&amp;view=findpost&amp;p=363988</link>
        <description><![CDATA[romtek: <span class='tag-size' data-value='10' style='font-size:10pt;'><span class='tag-u'>Задача:</span></span><br>
<br>
<strong class='tag-b'><span class='tag-size' data-value='10' style='font-size:10pt;'>Вывести слова в предложении, разделённые пробелом, запятой или точкой.</span></strong><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">program Parsing;</div><div class="code_line">&nbsp;</div><div class="code_line">procedure ParseWords(s: string);</div><div class="code_line">const Delimiters : set of char = [&#39; &#39;, &#39;.&#39; , &#39;,&#39;]; { Разделители слов в предложении. Можно добавить другие }</div><div class="code_line">var i, op: word;</div><div class="code_line">&nbsp;</div><div class="code_line">procedure CutWord;</div><div class="code_line">var _word: string;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; _word:=copy(s,op,i-op);</div><div class="code_line">&nbsp;&nbsp; &nbsp; writeln(&#39;&quot;&#39;,_word,&#39;&quot;&#39;); { вывод слова }</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; i:=0;</div><div class="code_line">&nbsp;&nbsp; &nbsp; op:=1;</div><div class="code_line">&nbsp;&nbsp; &nbsp; while i&#60;=length(s) do</div><div class="code_line">&nbsp;&nbsp; &nbsp; begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;inc(i);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if s[i] in Delimiters then { если найден разделитель, то &quot;вырезать&quot; слово }</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; CutWord;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; op:=i+1; { Запомнить начало предыдущего слова. Т.е. следующий индекс после разделителя }</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;end;</div><div class="code_line">&nbsp;&nbsp; &nbsp; end;</div><div class="code_line">&nbsp;&nbsp; &nbsp; if op&#60;&#62;i then CutWord; { Осталось нетронутое слово. Его тоже не забудем :) }</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; ParseWords(&#39;tester.1 23&#39;); { Вывод слов из предложения, разделённых знаками }</div><div class="code_line">&nbsp;&nbsp; &nbsp; readln;</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=50823&amp;view=findpost&amp;p=334634</guid>
        <pubDate>Fri, 09 Apr 2004 04:32:05 +0000</pubDate>
        <title>Задачи по строкам</title>
        <link>https://forum.sources.ru/index.php?showtopic=50823&amp;view=findpost&amp;p=334634</link>
        <description><![CDATA[filh: <span class='tag-size' data-value='10' style='font-size:10pt;'><span class='tag-u'>Задача:</span></span><br>
<br>
<strong class='tag-b'><span class='tag-size' data-value='10' style='font-size:10pt;'>Даны две строки, найти наибольшую общую подстроку в этих строках.</strong></span><br>
<br>
<br>
<strong class='tag-b'>Описание:</strong><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 findSubStr(Str1, Str2: string): string;</div></ol></div></div></div></div><br>
Str1 - первая строка;<br>
Str2 - вторая строка;<br>
Функция возвращает наибольшую общую подстроку в Str1 и Str2.<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">function findSubStr(Str1, Str2: string): string;</div><div class="code_line">var</div><div class="code_line">&nbsp;&nbsp;Sout: string;</div><div class="code_line">&nbsp;&nbsp; i,j, len: integer;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;len := 0;</div><div class="code_line">&nbsp;&nbsp;for j := 1 to length (Str1) do</div><div class="code_line">&nbsp;&nbsp; for i := 1 to length (Str1) - j + 1 do</div><div class="code_line">&nbsp;&nbsp; &nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;Sout := copy (Str2, i, j);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;if (pos (Sout, Str1) &#62; 0) and (length (Sout) &#62; len) then</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; findSubStr := copy(Str1, pos (Sout, Str1), j);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; len := j;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; end;</div><div class="code_line">&nbsp;&nbsp; &nbsp;end;</div><div class="code_line">end;</div></ol></div></div></div></div><br>
<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">&nbsp;</div><div class="code_line">...</div><div class="code_line">&nbsp;&nbsp;s1 := &#39;The power of Turbo Pascal&#39;;</div><div class="code_line">&nbsp;&nbsp;s2 := &#39;Pascal is a powerful programming language&#39;;</div><div class="code_line">&nbsp;&nbsp;writeln (&#39;Substr = &#39; + findSubStr (s1, s2)); &nbsp; &nbsp; &nbsp; { Substr=&#39;Pascal&#39; }</div><div class="code_line">...</div></ol></div></div></div></div>]]></description>
        <author>filh</author>
        <category>Pascal: Структуры данных</category>
      </item>
	
      </channel>
      </rss>
	