<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Статьи о программировании, все о программировании, исходники программ &#187; Delphi/Pascal</title>
	<atom:link href="http://statprog.ru/category/delphipascal/feed/" rel="self" type="application/rss+xml" />
	<link>http://statprog.ru</link>
	<description>Авторские статьи, исходники, программы.</description>
	<lastBuildDate>Thu, 12 Aug 2010 16:53:27 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Вещественная матрица размером 100 x 200 на Pascal</title>
		<link>http://statprog.ru/2009/04/19/veshhestvennaya-matrica-razmerom-100-x-200-na-pascal/</link>
		<comments>http://statprog.ru/2009/04/19/veshhestvennaya-matrica-razmerom-100-x-200-na-pascal/#comments</comments>
		<pubDate>Sun, 19 Apr 2009 07:26:57 +0000</pubDate>
		<dc:creator>evteev</dc:creator>
				<category><![CDATA[Delphi/Pascal]]></category>

		<guid isPermaLink="false">http://statprog.ru/?p=243</guid>
		<description><![CDATA[В данной статье я разберу следующую задачку: • С помощью динамических переменных реализуйте вещественную матрицу размером 100 x 200. Каждому элементу матрицы присвойте случайное значение из заданного диапазона. Отсортируйте элементы массива по сквозному порядку их размещения в матрице как в &#8230; <a href="http://statprog.ru/2009/04/19/veshhestvennaya-matrica-razmerom-100-x-200-na-pascal/">Читать далее <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>В данной статье я разберу следующую задачку:<br />
• С помощью динамических переменных реализуйте вещественную матрицу размером 100 x 200. Каждому элементу <strong>матрицы</strong> присвойте случайное значение из заданного диапазона. Отсортируйте элементы массива по сквозному порядку их размещения в матрице как в одномерном массиве. Выдайте на экран первую подматрицу размером 10 x 13. Для сортировки используйте <strong>метод пузырька</strong>.</p>
<p>Реализовать программный код будем на языке <strong>Pascal</strong>. Сначала подключим модуль “CRT” для работы с экраном, объявим необходимые переменные, нужные для выполнения поставленной задачи.<span id="more-243"></span></p>
<pre class="brush: delphi;">Program massive;
uses CRT;
type str = array[1..100] of real; {описываем тип массив из 100 элементов}

var  mas:array[1..200] of ^str; {Описываем массив указателей на массивы строк}
     i,j:integer;
     s:real;</pre>
<p>Далее, напишем процедуру “Sort”, в которой будет выполняться сортировка элементов каждой строки в массиве по возрастанию. Потом сортируем строки также в порядке возрастания, сравнивая первые элементы каждой строки.</p>
<pre class="brush: delphi;">Procedure Sort; {Сортировка методом обмена}
var min,buf:real;
    i,j,i1,j1,pr1,pr2,ik,jk:integer;
    en:boolean;
    bf,mn:str;
begin
i:=1;
while i&lt; =200 do begin  {Сортировка внутри строк}
 j:=1;
 while j&lt;=99 do begin  {перебираем элементы строк}
  ik:=0; jk:=0;
  min:=mas[i]^[j];    {Делаем текущий элемент минимальным}
  j1:=j+1;
  while j1&lt;=100 do begin {перебираем элементы от текущего до конца строки}
   if min&gt;mas[i]^[j1] then begin {ищем наименьший элемент, который меньше текущего}
    min:=mas[i]^[j1];
    pr1:=j1;
   end;
   inc(j1);
  end;
  mas[i]^[pr1]:=mas[i]^[j];  {меняем текущий элемент и наименьший местами}
  mas[i]^[j]:=min;
  inc(j);
 end;
 inc(i);
end;
i:=1;
while i&lt; =199 do begin  {Сортировка строк по первому элементу}
 mn:=mas[i]^;      {запоминаем строку}
 min:=mas[i]^[1];  {и минимальный элемент}
 i1:=i+1;
 while i1&lt;=200 do begin  {перебираем все строки и сравниваем первые элементы}
  if min&gt;mas[i1]^[1] then begin {если находим элемент меньше текущего}
   mn:=mas[i1]^;   {то записываем строку}
   min:=mas[i1]^[1]; {и делаем его минимальным}
   pr1:=i1;         {запоминаем номер строки}
  end;
  inc(i1);
 end;
 mas[pr1]^:=mas[i]^;  {меняем строки местами}
 mas[i]^:=mn;
 inc(i);
end;
end;</pre>
<p>Все, что нам осталось, это написать главную процедуру. В ней сначала очищаем экран от распечатанного ранее текста, запустим процедуру “Randomize” для случайной генерации чисел. Массив 100&#215;200 заполняем случайно генерируемыми числами, сортируем массив, запустив написанную процедуру “sort”. Последнее, что мы делаем, выводим подматрицу 10&#215;13 на экран, используя внешний и внутренний циклы.</p>
<pre class="brush: delphi;">begin
clrscr;
{/////////////////////////////////////////////////////////////////////}
writeln;
Randomize;
i:=1;
while i&lt; =200 do begin {Заполняем массив случайными числами}
 New(mas[i]);
 j:=1;
 while j&lt;=100 do begin
  s:=Random(40)+Random;
  mas[i]^[j]:=s;
  inc(j);
 end;
 inc(i);
end;
sort;   {Сортируем}
i:=1;
while i&lt;=10 do begin {Выводим подматрицу}
 j:=1;
 while j&lt;=13 do begin
  write((mas[i]^[j]):5:2,'|');
  inc(j);
 end;
 inc(i);
 writeln;
end;
readln;
end.</pre>
<p>Все, что нужно для выполнения задачи и реализации ее на Pascal мы сделали. Было написано заполнение массива случайными числами, сортировка и вывод подматрицы на экран пользователя.</p>
<blockquote><p><strong>Автор</strong>: <em>Евтеев Евгений Александрович</em><br />
<strong>Email</strong>: <em>evteev_e2003@mail.ru</em></p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://statprog.ru/2009/04/19/veshhestvennaya-matrica-razmerom-100-x-200-na-pascal/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
