<?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=156883&amp;view=findpost&amp;p=1295109</guid>
        <pubDate>Sat, 07 Oct 2006 21:57:55 +0000</pubDate>
        <title>Решение СЛАУ методом Крамера</title>
        <link>https://forum.sources.ru/index.php?showtopic=156883&amp;view=findpost&amp;p=1295109</link>
        <description><![CDATA[Bug Hunter: :D <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=156883&view=findpost&p=1294965'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>volvo877 &#064; <time class="tag-quote__quoted-time" datetime="2006-10-07T22:59:29+04:00">07.10.06, 18:59</time></span><div class='quote '><br>
<br>
Цитата (volvo877 @ 14.03.06, 14:01)<br>
(если элемент главной матрицы - нулевой, то строка, его содержащая переносится на другую позицию. Знак детерминанта изменится, потому что одна перестановка строк меняет знак определителя)<br>
Это Вы, уважаемый, не заметили в силу чьего идиотизма?</div></div><br>
Ну, и? Действие над матрицей и свойства этого действия описаны правильно. Только <br>
вот для получения результата - преобразования матрицы к треугольному виду - <br>
требуется выполнять правильные действия в правильной последовательности. А Вы, <br>
уважаемый  :D , второй раз наступаете на те же грабли - предлагаете сначала <br>
убрать нули с главной диагонали, а затем предлагаете делать другие действия, <br>
которые опять, как Вы сами же правильно заметили, могут привести к появлению <br>
нулей на главной диагонали. Хотя последовательность действий для преобразования <br>
матрицы к треугольному виду (ровно как и способы подсчета определителей матрицы) <br>
описаны в любом ВУЗовском учебнике по основам высшей математике, расказаны на <br>
лекциях, проработаны на семинарах и являються задачами, обязательными к решению <br>
студентами первого семестра любого технического ВУЗа. Т.е. если студент не <br>
может решить такую задачу на зачете, его просят придти в другой раз. Попозже.<br>
А теперь потрудитесь, пожалуйста, объяснить, в силу чьего идеотизма или в силу <br>
каких жизненных обстоятельств Вы не умеете решать задачи первого семестра?<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=156883&view=findpost&p=1294965'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>volvo877 &#064; <time class="tag-quote__quoted-time" datetime="2006-10-07T18:59:29+00:00">07.10.06, 18:59</time></span><div class='quote '>Я что, где-то обязывался приводить программы &quot;под ключ&quot;? </div></div><br>
А где я тебе за ЭТО предъяву делаю? Более того, насколько я помню, когда ты <br>
постил эту прогу первый раз, ты оговорил, что она являеться ограничено <br>
работоспособной и только демонстрирует метод Крамера. Ты мог бы вообще даже <br>
ограниченную реализацию подпрограммы подсчета определителя не делать, оставив <br>
заглушку.<br>
Идеотизм ситуации здесь в другом. Челу нужна работоспособная программа. Так вот,<br>
вместо того, что бы подсказать (никто не заставляет тебя делать реализацию), что <br>
надо разбираться с ограничено работоспособной (т.е. неправильной) <br>
подпрограмммой, или просто промолчать (Иногда лучше жевать&#33; :D )ты поддерживаешь <br>
ОЧЕВИДНО ахенеистическое направление по преобразованию исходных данных так, <br>
чтобы неправильный код мог их правильно обработать&#33; Ну, если это не идеотизм, <br>
то я просто не знаю что. :wall: <br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=156883&view=findpost&p=1294965'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>volvo877 &#064; <time class="tag-quote__quoted-time" datetime="2006-10-07T18:59:29+00:00">07.10.06, 18:59</time></span><div class='quote '>Я понимаю, легко рассуждать, когда своих программ на форума - пальцев на двух руках хватит, чтоб пересчитать. Как видно, чтоб не было критики, ничего не постите, кроме досужих рассуждений? </div></div><br>
ИНТЕРЕСНЫЕ вопросы, которые для ПОМОЩИ в их решении требуют именно приведения <br>
фрагмента кода, возникают крайне редко. А зарабатывать себе дутый рейтинг, решая <br>
легкие лабы для бездельников, мне не интересно. Ку?<br>
Я понимаю, что указания, которые могут помочь самостоятельно решить задачу <br>
человеку с головой и желанием чему то научиться могут быть восприняты отдельными <br>
недалекими товарищами как досужие рассуждения, но это их личные тараканы. Мне <br>
плевать. Хотя иногда конечно бывает и обидно.]]></description>
        <author>Bug Hunter</author>
        <category>Pascal</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=156883&amp;view=findpost&amp;p=1294965</guid>
        <pubDate>Sat, 07 Oct 2006 18:59:29 +0000</pubDate>
        <title>Решение СЛАУ методом Крамера</title>
        <link>https://forum.sources.ru/index.php?showtopic=156883&amp;view=findpost&amp;p=1294965</link>
        <description><![CDATA[volvo877: <strong class='tag-b'>Bug Hunter</strong>, я бы попросил две вещи: во-первых, перейти из режима Write-only в <strong class='tag-b'>хотя бы иногда</strong> режим чтения, а во-вторых проследить за своим лексиконом. Я ясно выражаюсь? :angry: <br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=156883&view=findpost&p=1043423'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>volvo877 &#064; <time class="tag-quote__quoted-time" datetime="2006-03-14T11:01:40+00:00">14.03.06, 11:01</time></span><div class='quote '>(если элемент главной матрицы - нулевой, то строка, его содержащая переносится на другую позицию. Знак детерминанта изменится, потому что одна перестановка строк меняет знак определителя)</div></div>Это Вы, уважаемый, не заметили в силу чьего идиотизма? Я что, где-то обязывался приводить программы &quot;под ключ&quot;? Я понимаю, легко рассуждать, когда своих программ на форума - пальцев на двух руках хватит, чтоб пересчитать. Как видно, чтоб не было критики, ничего не постите, кроме досужих рассуждений?  &lt;_&lt;]]></description>
        <author>volvo877</author>
        <category>Pascal</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=156883&amp;view=findpost&amp;p=1294959</guid>
        <pubDate>Sat, 07 Oct 2006 18:49:46 +0000</pubDate>
        <title>Решение СЛАУ методом Крамера</title>
        <link>https://forum.sources.ru/index.php?showtopic=156883&amp;view=findpost&amp;p=1294959</link>
        <description><![CDATA[Bug Hunter: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=156883&view=findpost&p=1292825'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>bizzz &#064; <time class="tag-quote__quoted-time" datetime="2006-10-06T05:20:30+00:00">06.10.06, 05:20</time></span><div class='quote '>Я думал, что создатели задачи не подразумавали такой трудоёмкости ;)<br>
А тут на тебе&#33; :) Пожалуй - это и есть тот уровень, который они (могли) подразумевали :)</div></div><br>
Я думаю, что составители задачи не подразумевали такого идеотизма.<br>
Проблема в том коде, который привел Вольво, заключаеться в том, что подпрограмма <br>
вычисления определителя работает неверно. Сам посмотри - для той матрицы, <br>
которую ты привел, значение определителя равно -1, а подпрограмма Вольво с <br>
какого-то перепугу считает, что он равен нулю. Отсюда вывод - надо правильно <br>
реализовать подпрограмму вычисления определителя, а не пытаться преобразовать <br>
исходные данные так, чтобы неправильная подпрограмма выдавала на них <br>
правильный результат. Даже если последняя задача и разрешима (в чем я лично <br>
очень сомневаюсь), она абсолютно бессмысленна.<br>
Так что учимся вычислять определители. <br>
Причем правильно&#33;  ;)]]></description>
        <author>Bug Hunter</author>
        <category>Pascal</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=156883&amp;view=findpost&amp;p=1292825</guid>
        <pubDate>Fri, 06 Oct 2006 05:20:30 +0000</pubDate>
        <title>Решение СЛАУ методом Крамера</title>
        <link>https://forum.sources.ru/index.php?showtopic=156883&amp;view=findpost&amp;p=1292825</link>
        <description><![CDATA[bizzz: <strong class='tag-b'>volvo877</strong>, о да&#33; :)<br>
Спасибо&#33;  :D<br>
Мне казалось, что алгоритм, предложенный тобой, сложнее, чем вся программа в целом до него.<br>
Я думал, что создатели задачи не подразумавали такой трудоёмкости ;)<br>
А тут на тебе&#33; :) Пожалуй - это и есть тот уровень, который они (могли) подразумевали :)<br>
Насчёт решенности вопроса - подождём вечера]]></description>
        <author>bizzz</author>
        <category>Pascal</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=156883&amp;view=findpost&amp;p=1292684</guid>
        <pubDate>Thu, 05 Oct 2006 22:42:15 +0000</pubDate>
        <title>Решение СЛАУ методом Крамера</title>
        <link>https://forum.sources.ru/index.php?showtopic=156883&amp;view=findpost&amp;p=1292684</link>
        <description><![CDATA[volvo877: <strong class='tag-b'>bizzz</strong>, прежде, чем ты начнешь изобретать этот велосипед, загляни сюда, я уже выкладывал нечто подобное - хорошо, что вспомнил:<br>
<br>
<a class='tag-url' href='http://forum.sources.ru/index.php?showtopic=135998&view=findpost&p=1043423' target='_blank'>Возвращаемся к матрицам и определителям (сообщение #1043423)</a>]]></description>
        <author>volvo877</author>
        <category>Pascal</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=156883&amp;view=findpost&amp;p=1292525</guid>
        <pubDate>Thu, 05 Oct 2006 18:08:06 +0000</pubDate>
        <title>Решение СЛАУ методом Крамера</title>
        <link>https://forum.sources.ru/index.php?showtopic=156883&amp;view=findpost&amp;p=1292525</link>
        <description><![CDATA[bizzz: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=156883&view=findpost&p=1292486'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>volvo877 &#064; <time class="tag-quote__quoted-time" datetime="2006-10-05T17:31:13+00:00">05.10.06, 17:31</time></span><div class='quote '>Попробуй это реализовать... </div></div><br>
Спасибо, попробую :)<br>
Завтра рано утром - сейчас уже не так чётко всё.<br>
Поставлю себе задачу как я её понимаю:<br>
1. из твоего примера сделать вывод в массив: номер строки исходной матрицы | возможные варианты расстановки<br>
2. <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=156883&view=findpost&p=1292486'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>volvo877 &#064; <time class="tag-quote__quoted-time" datetime="2006-10-05T17:31:13+00:00">05.10.06, 17:31</time></span><div class='quote '>если в каком-то из них есть ОДИН элемент - удаляешь его из всех остальных множеств</div></div><br>
3. проверка на пустоту множеств<br>
4. если всё ОК - последовательное перемещение строк]]></description>
        <author>bizzz</author>
        <category>Pascal</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=156883&amp;view=findpost&amp;p=1292486</guid>
        <pubDate>Thu, 05 Oct 2006 17:31:13 +0000</pubDate>
        <title>Решение СЛАУ методом Крамера</title>
        <link>https://forum.sources.ru/index.php?showtopic=156883&amp;view=findpost&amp;p=1292486</link>
        <description><![CDATA[volvo877: Сразу хочу сказать: это - не совсем корректная реализация, рассчитанная только на то, чтоб объяснить сам принцип. По-хорошему надо бы хранить не только множество разрешенных позиций, но и множество запрещенных, но это уже дело техники...<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=156883&view=findpost&p=1292478'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>bizzz &#064; <time class="tag-quote__quoted-time" datetime="2006-10-05T17:25:31+00:00">05.10.06, 17:25</time></span><div class='quote '>в случаях, когда он не однозначен</div></div>Нужно проверить, есть ли вообще решение: проходить по ВСЕМ множествам, и если в каком-то из них есть ОДИН элемент - удаляешь его из всех остальных множеств. Если в результате ты получишь хоть одно пустое множество - значит матрицу нельзя привести к нужному виду простой перестановкой строк. Попробуй это реализовать...  ;)]]></description>
        <author>volvo877</author>
        <category>Pascal</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=156883&amp;view=findpost&amp;p=1292478</guid>
        <pubDate>Thu, 05 Oct 2006 17:25:31 +0000</pubDate>
        <title>Решение СЛАУ методом Крамера</title>
        <link>https://forum.sources.ru/index.php?showtopic=156883&amp;view=findpost&amp;p=1292478</link>
        <description><![CDATA[bizzz: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=156883&view=findpost&p=1292458'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>volvo877 &#064; <time class="tag-quote__quoted-time" datetime="2006-10-05T17:06:17+00:00">05.10.06, 17:06</time></span><div class='quote '>Теперь более понятно?</div></div><br>
О да, спасибо за объяснение&#33;<br>
Остаётся открытым вопрос о реализации выбора (какие строки переставлять) в случаях, когда он не однозначен.<br>
Можно, в принципе, переставлять по одной строчке до тех пор, пока либо все элементы главной диагонали будут НЕ равны нулю, либо не останется строчка (или не одна, несколько строк), которая стоит не на своём месте, но и перемещена быть не может - если такое случилось - всё, теперь точно отказываемся от продолжения.<br>
Я попробую это сделать]]></description>
        <author>bizzz</author>
        <category>Pascal</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=156883&amp;view=findpost&amp;p=1292458</guid>
        <pubDate>Thu, 05 Oct 2006 17:06:17 +0000</pubDate>
        <title>Решение СЛАУ методом Крамера</title>
        <link>https://forum.sources.ru/index.php?showtopic=156883&amp;view=findpost&amp;p=1292458</link>
        <description><![CDATA[volvo877: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=156883&view=findpost&p=1292447'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>bizzz &#064; <time class="tag-quote__quoted-time" datetime="2006-10-05T16:57:36+00:00">05.10.06, 16:57</time></span><div class='quote '>программа в итоге убирает все элементы из arr, равные нулю. И под конец же имеем некую сетку с координатами не равных нулю элементов. Верно я понял?</div></div><br>
Не совсем... Программа запоминает, в какой позиции может находиться соответствующая строка. Т.е., если элемент №2 в определенной строке равен нулю, то эту строку уже однозначно нельзя поставить на второе место (второй сверху). Поэтому из множества возможных НОВЫХ позиций для этой строки 2 нужно удалить, если оно там уже есть. Этим и занимается Exclude - удалить элемент из множества. Если же <em class='tag-i'>i-ый</em> элемент НЕ равен 0, то строка может находиться в этой позиции, и номер <em class='tag-i'>i</em> нужно включить (Include) во множество... Ну, и в результате - получили то, что получили - строка, которая сейчас первая может быть только второй; та, которая сейчас вторая - только первой; а та, которая сейчас третья - может быть первой или третьей. Теперь более понятно?]]></description>
        <author>volvo877</author>
        <category>Pascal</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=156883&amp;view=findpost&amp;p=1292447</guid>
        <pubDate>Thu, 05 Oct 2006 16:57:36 +0000</pubDate>
        <title>Решение СЛАУ методом Крамера</title>
        <link>https://forum.sources.ru/index.php?showtopic=156883&amp;view=findpost&amp;p=1292447</link>
        <description><![CDATA[bizzz: <strong class='tag-b'>volvo877</strong>, спасибо за попомщь.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=156883&view=findpost&p=1292368'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>volvo877 &#064; <time class="tag-quote__quoted-time" datetime="2006-10-05T15:56:43+00:00">05.10.06, 15:56</time></span><div class='quote '>договорились?</div></div><br>
Конечно, это подразумевается по умолчанию, что сначала думаю я ;) а потом уже задаю вопрос, если сам не додумался<br>
<br>
Я не обладаю всей полнотой знания паскаля, поэтоу даже тип set или операции Exclude/Include для меня новы.<br>
Я понял программа в итоге убирает все элементы из arr, равные  нулю. И под конец же имеем некую сетку с координатами не равных нулю элементов. Верно я понял?<br>
<br>
Возможно я понял назначение программы, но идею я, похоже, не уловил ;(<br>
<br>
Попробую развить свои идею:<br>
находим 0 в главной диагонали в столбце j - запускаем перебор по этому столбцу пока не найдём не равный 0 элем... уфф словами долго, попробую вставить свой код:<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 i,j,q,z:byte; arr:array[1..n] of integer; matr:matrix;</div><div class="code_line">begin</div><div class="code_line">for i:=1 to n do</div><div class="code_line">for j:=1 to n do</div><div class="code_line">{ a := Equation тут}</div><div class="code_line">matr[i,j]:=a[i,j];</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">for i:=1 to n do</div><div class="code_line">&nbsp;if a[i,i]=0 then</div><div class="code_line">&nbsp;&nbsp;if arr[i]=0 then</div><div class="code_line">&nbsp;&nbsp; for q:=1 to n do</div><div class="code_line">&nbsp;&nbsp; &nbsp;if a[q,i]&#60;&#62;0 then begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;for z:=1 to n do begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; matr[i,z]:=a[q,z];</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; matr[q,z]:=a[i,z];</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; end;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;arr[q]:=1;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;break;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;end;</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br>
вот так, перемещает строчки только если они ещё не были перемещены (arr[i]=0)<br>
это то, как я хочу, чтобы оно работало, на самом деле что-то не получается ;(]]></description>
        <author>bizzz</author>
        <category>Pascal</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=156883&amp;view=findpost&amp;p=1292368</guid>
        <pubDate>Thu, 05 Oct 2006 15:56:43 +0000</pubDate>
        <title>Решение СЛАУ методом Крамера</title>
        <link>https://forum.sources.ru/index.php?showtopic=156883&amp;view=findpost&amp;p=1292368</link>
        <description><![CDATA[volvo877: <strong class='tag-b'>bizzz</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">const</div><div class="code_line">&nbsp;&nbsp;n = 3;</div><div class="code_line">&nbsp;&nbsp;Equation: Array[1 .. n, 1 .. Succ(n)] Of Integer = (</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;(0, 1, 0, 1),</div><div class="code_line">&nbsp;&nbsp; &nbsp;(1, 0, 0, 1),</div><div class="code_line">&nbsp;&nbsp; &nbsp;(1, 0, 1, 2)</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;);</div><div class="code_line">&nbsp;</div><div class="code_line">type</div><div class="code_line">&nbsp;&nbsp;T = set of byte;</div><div class="code_line">var</div><div class="code_line">&nbsp;&nbsp;Arr: Array[1 .. n] of T;</div><div class="code_line">&nbsp;&nbsp;i, j: integer;</div><div class="code_line">&nbsp;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;for i := 1 to n do Arr[i] := [];</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;for i := 1 to n do</div><div class="code_line">&nbsp;&nbsp; &nbsp;for j := 1 to n do begin</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;if Equation[i, j] = 0 then Exclude(Arr[i], j)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;else Include(Arr[i], j);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;end;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;for i := 1 to n do begin</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;write(&#39;[&#39;);</div><div class="code_line">&nbsp;&nbsp; &nbsp;for j := 0 to n do</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;if j in arr[i] then write(j:3);</div><div class="code_line">&nbsp;&nbsp; &nbsp;writeln(&#39;]&#39;);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">end.</div></ol></div></div></div></div><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;2]</div><div class="code_line">[ &nbsp;1]</div><div class="code_line">[ &nbsp;1 &nbsp;3]</div></ol></div></div></div></div><br>
<br>
Уловил смысл? То есть, других вариантов как бы и нет, кроме того, что ты предложил (поменять первую и вторую строку). Я попробую развить эту идею (вполне возможно, кстати, что она ошибочная, я ничего пока не могу утверждать), но и ты тоже попробуй подумать над этим, договорились?]]></description>
        <author>volvo877</author>
        <category>Pascal</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=156883&amp;view=findpost&amp;p=1292362</guid>
        <pubDate>Thu, 05 Oct 2006 15:55:11 +0000</pubDate>
        <title>Решение СЛАУ методом Крамера</title>
        <link>https://forum.sources.ru/index.php?showtopic=156883&amp;view=findpost&amp;p=1292362</link>
        <description><![CDATA[SeaGirl: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=156883&view=findpost&p=1292314'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>bizzz &#064; <time class="tag-quote__quoted-time" datetime="2006-10-05T15:23:55+00:00">05.10.06, 15:23</time></span><div class='quote '>Я хотел сделать функцию, которая, найдя нулевой элемент в главной диагонали, искала бы в этом же столбце ненулевой и переставляла строчки местами,<br>
но не смог реализовать это: алгоритм её для произвольного (1&lt;n&lt;16) n для меня не очевиден, да и та, что я смог сделать, в некоторых ситуациях зацикливалась в бесконечность...</div></div><br>
Покажи что у тебя получилось.]]></description>
        <author>SeaGirl</author>
        <category>Pascal</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=156883&amp;view=findpost&amp;p=1292314</guid>
        <pubDate>Thu, 05 Oct 2006 15:23:55 +0000</pubDate>
        <title>Решение СЛАУ методом Крамера</title>
        <link>https://forum.sources.ru/index.php?showtopic=156883&amp;view=findpost&amp;p=1292314</link>
        <description><![CDATA[bizzz: Привет&#33;<br>
Есть задача сделать программу для решения СЛАУ методом Крамера.<br>
Я нашел очень хороший вариант (см. внизу) от volvo877 (спасибо&#33;)<br>
Единственный минус - нет &quot;защиты от пользователя&quot;<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">d := a[j, i] / a[i, i];</div></ol></div></div></div></div><br>
Подразумевается, что пользователь будет давать такие матрицы, в которых диагональные элементы не равны нулю, а если таковое и случилось - то только в том, случае, когда все комбинации детерминанта  = 0.<br>
Но при тесте программы неожиданно встал вопрос: а если пользователь (по незнанию) введёт, к примеру (ранг матрицы=3), такие данные (коэффициенты при х):<br>
0 1 0 = 1<br>
1 0 0 = 1<br>
1 0 1 = 2<br>
Решение у такой системы есть, но при таком порядке уравнений (строк в матрице) программа его не найдёт&#33; ;(<br>
Достаточно лишь поменять местами первые две строки матрицы (тем самым убрав нули из главной диагонали) и всё заработает.<br>
Но так сделает программист, а не пользователь... Нужно как-то это автоматизировать, причём для рангов матрицы до n=16.<br>
Я хотел сделать функцию, которая, найдя нулевой элемент в главной диагонали, искала бы в этом же столбце ненулевой и переставляла строчки местами,<br>
но не смог реализовать это: алгоритм её для произвольного (1&lt;n&lt;16) n для меня не очевиден, да и та, что я смог сделать, в некоторых ситуациях зацикливалась в бесконечность...<br>
<br>
Поэтому прошу помощи Вас. Вполне вероятно, что я что-то пропустил и есть более простой способ решить задачу и я буду очень рад, если вы мне его подскажете<br>
<br>
Вот программа volvo:<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+}</div><div class="code_line">{ Задаем порядок системы уравнений }</div><div class="code_line">Const n = 3;</div><div class="code_line">&nbsp;</div><div class="code_line">Type</div><div class="code_line">&nbsp;&nbsp;{ Тип, описывающий матрицу системы (включая свободные члены !!!) }</div><div class="code_line">&nbsp;&nbsp;Equation = Array[1 .. n, 1 .. Succ(n)] Of Double;</div><div class="code_line">&nbsp;&nbsp;matrix =</div><div class="code_line">&nbsp;&nbsp; &nbsp;Array[1 .. n, 1 .. n] Of Double;</div><div class="code_line">&nbsp;</div><div class="code_line">Const</div><div class="code_line">&nbsp;&nbsp;a: Equation =</div><div class="code_line">&nbsp;&nbsp; ((2, 1, 3, 9),</div><div class="code_line">&nbsp;&nbsp; &nbsp;(1, -2, 1, -2),</div><div class="code_line">&nbsp;&nbsp; &nbsp;(3, 2, 2, 7));</div><div class="code_line">&nbsp;</div><div class="code_line">{ Процедура замены очередного столбца матрицы на свободные члены }</div><div class="code_line">Procedure GetMatrix(wout: Integer; Var m: matrix);</div><div class="code_line">&nbsp;&nbsp;Var i, j: Integer;</div><div class="code_line">&nbsp;&nbsp;Begin</div><div class="code_line">&nbsp;&nbsp; &nbsp;For i := 1 To n Do</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;For j := 1 To n Do</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;If j &#60;&#62; wout Then m[i, j] := a[i, j]</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;Else m[i, j] := a[i, Succ(n)]</div><div class="code_line">&nbsp;&nbsp;End;</div><div class="code_line">&nbsp;</div><div class="code_line">{ Нахождение определителя }</div><div class="code_line">Function Det(a: matrix; n: integer): Double;</div><div class="code_line">&nbsp;&nbsp;Var i, j, k: Integer; d: Double;</div><div class="code_line">&nbsp;&nbsp;Const</div><div class="code_line">&nbsp;&nbsp; &nbsp;Eps = 10E-6;</div><div class="code_line">&nbsp;&nbsp;Begin</div><div class="code_line">&nbsp;&nbsp; &nbsp;For i := 1 To Pred(n) Do</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;Begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;If Abs(a[i, i]) &#60; Eps Then</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Det := 0.0; Exit</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;End;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;For j := Succ(i) To n Do</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;d := a[j, i] / a[i, i];</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;For k := i To n Do</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;a[j, k] := a[j, k] - d * a[i, k];</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;End;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;End;</div><div class="code_line">&nbsp;&nbsp; &nbsp;d := 1.0;</div><div class="code_line">&nbsp;&nbsp; &nbsp;For i := 1 To n Do</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;d := d * a[i, i];</div><div class="code_line">&nbsp;&nbsp; &nbsp;Det := d</div><div class="code_line">&nbsp;&nbsp;End;</div><div class="code_line">&nbsp;</div><div class="code_line">Var</div><div class="code_line">&nbsp;&nbsp;i: Integer;</div><div class="code_line">&nbsp;&nbsp;mx: matrix;</div><div class="code_line">&nbsp;&nbsp;Determ: Double;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;GetMatrix(Succ(n), mx);</div><div class="code_line">&nbsp;&nbsp;Determ := Det(mx, n);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;If Abs(Determ) &#60; 1E-6 Then</div><div class="code_line">&nbsp;&nbsp; &nbsp;Writeln( &#39;Определитель исходной матрицы = 0&#39; )</div><div class="code_line">&nbsp;&nbsp;Else</div><div class="code_line">&nbsp;&nbsp; &nbsp;For i := 1 To n Do</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;Begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;GetMatrix(i, mx);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;WriteLn( &#39;x(&#39;, i, &#39;) = &#39;, (Det(mx, n) / Determ):7:4 )</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;End</div></ol></div></div></div></div>]]></description>
        <author>bizzz</author>
        <category>Pascal</category>
      </item>
	
      </channel>
      </rss>
	