<?xml version="1.0" encoding="utf-8"?> 
<rss version="2.0"
  xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
  xmlns:atom="http://www.w3.org/2005/Atom">

<channel>

<title>Математик среди биологов: заметки с тегом вектор</title>
<link>https://antonlyakh.ru/blog/tags/vektor/</link>
<description>Я немного умею складывать, но от вычитания у меня всегда кружится голова</description>
<author>Антон Лях</author>
<language>ru</language>
<generator>E2 (v3559; Aegea)</generator>

<itunes:owner>
<itunes:name>Антон Лях</itunes:name>
<itunes:email></itunes:email>
</itunes:owner>
<itunes:subtitle>Я немного умею складывать, но от вычитания у меня всегда кружится голова</itunes:subtitle>
<itunes:image href="" />
<itunes:explicit></itunes:explicit>

<item>
<title>Приемы программирования. Вернуть вектор</title>
<guid isPermaLink="false">391</guid>
<link>https://antonlyakh.ru/blog/all/priemy-programmirovaniya-vernut-vektor/</link>
<pubDate>Wed, 16 Sep 2020 18:29:33 +0300</pubDate>
<author>Антон Лях</author>
<comments>https://antonlyakh.ru/blog/all/priemy-programmirovaniya-vernut-vektor/</comments>
<description>
&lt;p&gt;Иногда функция должна вернуть не одно, а несколько значений. Например флаг успеха или неудачи, несколько найденных параметров и массив. Фактически она возвращает векторный результат.&lt;/p&gt;
&lt;p&gt;Раньше для получения векторного результата я передавал несколько переменных по ссылке и ждал булево значение функции.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;// Здесь ожидаю два параметра и двумерный массив, а функция возвращает флаг успеха-неудачи.
function navalniy( 
    source_data : TVector; var temperature : real; var blood_pressure : real; var spy_data : TVector
) : boolean;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Теперь я просто получаю один векторный результат.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;function navalniy( source_data : TVector ) : TVector;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Первый компонент вектора содержит флаг успеха и вычисленные скалярные параметры, остальные — заполненный массив.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class="cpp"&gt;
spy_data = navalniy( source_data );
if (spy_data[0][0] == 0) {
  alert(‘Явка провалена. Немедленно уходить!’);
  exit();
} else {
  temperature = spy_data[0][1];
  blood_pressure = spy_data[0][2];
  list_of_comrades = (spy_data[1], …, spy_data[M]);
  // Все в порядке, продолжаем готовить революцию
  // …
}
&lt;/code&gt;
&lt;/pre&gt;
&lt;p&gt;Единственное, при таком подходе нужно следить, чтобы размерность второй координаты массива (resulted_array[•][×]) была не меньше размерности ожидаемых дополнительных параметров (param{i}). В противном случае параметры следует вернуть в нескольких начальных  компонентах ветора-результата.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class="cpp"&gt;
spy_data = navalniy( source_data );
if (spy_dat[0][0] &gt; 0) {
  temperature =spy_dat[0][1];
  blood_pressure = spy_dat[0][2];
  leukocytes = spy_datt[1][0];
  hemoglobin = spy_dat[1][1];
  erythrocytes = spy_dat[1][2];
  // Возвращенный массив начинается с N-ой компоненты вектора-результата
  list_of_comrades = (spy_dat[N], …, spy_dat[M]);
  // …
}
&lt;/code&gt;
&lt;/pre&gt;
&lt;p&gt;Векторы — это сила.&lt;/p&gt;
</description>
</item>


</channel>
</rss>