<?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; исходники</title>
	<atom:link href="http://www.studcode.ru/archiv/tag/isxodniki/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.studcode.ru</link>
	<description>Конспекты лекций, самостоятельные работы по  delphi, с++, php. Курсовые проекты. Все что мы сделали вы можете скачать без проблем!</description>
	<lastBuildDate>Wed, 27 Oct 2010 15:15:19 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Закрашивание замкнутых областей.</title>
		<link>http://www.studcode.ru/archiv/zakrashivanie-zamknutyx-oblastej/</link>
		<comments>http://www.studcode.ru/archiv/zakrashivanie-zamknutyx-oblastej/#comments</comments>
		<pubDate>Sat, 16 Jan 2010 17:12:06 +0000</pubDate>
		<dc:creator>sleepes</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Лабораторные работы]]></category>
		<category><![CDATA[исходники]]></category>
		<category><![CDATA[лабы]]></category>

		<guid isPermaLink="false">http://www.studcode.ru/?p=963</guid>
		<description><![CDATA[Замкнутая область задается границей определенного цвета или цветным пятном.
Простейший алгоритм заполнения называется алгоритм кораеда.
Алгоритм:

Добавить начальную полоску в список
Цикл, пока список не пустой


берем первую точку из списка(удаляем ее)
закрашиваем взятую точку
проверяем 4 точки вокруг и если их цвет не совпадает с цветом границыи она не закрашена, то добавляем ее в список.



unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Classes, [...]]]></description>
			<content:encoded><![CDATA[<p>Замкнутая область задается границей определенного цвета или цветным пятном.</p>
<p>Простейший алгоритм заполнения называется алгоритм <span style="text-decoration: underline;"><strong>кораеда</strong></span>.</p>
<p><em>Алгоритм:</em></p>
<ul>
<li>Добавить начальную полоску в список</li>
<li>Цикл, пока список не пустой</li>
</ul>
<ol>
<li>берем первую точку из списка(удаляем ее)</li>
<li>закрашиваем взятую точку</li>
<li>проверяем 4 точки вокруг и если их цвет не совпадает с цветом границыи она не закрашена, то добавляем ее в список.</li>
</ol>
<p><span id="more-963"></span></p>
<pre><code>
unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Buttons, jpeg, ExtCtrls, ColorGrd;

type
Stek = ^St;
    St=record
    x,y:integer;
    Next:Stek;
    end;
  TForm1 = class(TForm)
    Image1: TImage;
    procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure FormCreate(Sender: TObject);
    procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure Image1MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
  private
    { Private declarations }
  public
    first:stek;{ Public declarations }
    C1,C2:TColor;
    procedure Add (X1,Y1:integer);
    procedure Del (var X1,y1:integer);
  end;
var
  Form1: TForm1;
  MD: boolean;
implementation

{$R *.DFM}

procedure TForm1.Add(X1, Y1: integer);
var
 elem:Stek;
begin
   New (elem);
elem.x:=X1;
elem.y:=Y1;
elem.Next:=first;
first:=elem;
end;

procedure TForm1.Del(var X1, y1: integer);
var
x,y:integer;
elem:Stek;
begin
   if first <> nil then
   begin
   x1:=first.x;
   y1:=first.y;
   elem:=first;
   first:=first.Next;
   dispose (elem);
    end;
end;

procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
  var
  X1,y1:integer;
  begin
  if Button=mbleft then
  begin
  MD:=true;
  Image1.Canvas.MoveTo(x,y);
  end
  else
  begin
  c2:=Image1.Canvas.Pixels[x,y];
  c1:=RGB(random(255),random(255),random(255));
  first:=nil;
  Add(x,y);
  while (first <> nil) do
  begin
  Del (x1,y1);
  Image1.Canvas.Pixels[x1,y1]:=C1;
  if (Image1.Canvas.Pixels[x1,y1-1]=C2) then
  Add (x1,Y1-1);
   if (Image1.Canvas.Pixels[x1,y1+1]=C2) then
  Add (X1,Y1+1);
  if (Image1.Canvas.Pixels[x1-1,y1]=C2)then
   Add (x1-1,y1);
  if (Image1.Canvas.Pixels[x1+1,y1]=C2)  then
  Add (x1+1,y1);
  end;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Image1.Canvas.Rectangle(0,0,Image1.Width,Image1.Height);
first:=nil;
end;

procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
if MD then
  Image1.Canvas.LineTo(x,y);
end;

procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
MD:=false;
end;
end.

</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://www.studcode.ru/archiv/zakrashivanie-zamknutyx-oblastej/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Фрактальное дерево.</title>
		<link>http://www.studcode.ru/archiv/fraktalnoe-derevo/</link>
		<comments>http://www.studcode.ru/archiv/fraktalnoe-derevo/#comments</comments>
		<pubDate>Fri, 15 Jan 2010 16:54:59 +0000</pubDate>
		<dc:creator>sleepes</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Лабораторные работы]]></category>
		<category><![CDATA[исходники]]></category>
		<category><![CDATA[лабы]]></category>

		<guid isPermaLink="false">http://www.studcode.ru/?p=961</guid>
		<description><![CDATA[Фрактал &#8211; это графический объект состоящий из множества небольших объектов, каждый из которых выглядит как и сам большой объект.
Задание: нарисовать фрактальное дерево.


unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
  [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Фрактал</strong> &#8211; это графический объект состоящий из множества небольших объектов, каждый из которых выглядит как и сам большой объект.</p>
<p><em>Задание:</em> нарисовать фрактальное дерево.</p>
<p><span id="more-961"></span></p>
<pre><code>
unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    //procedure fak(x, y, a, al, be, ga: integer);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  max:integer;  //густота ветвей, самая густая=1, чем больше тем убывает
implementation

{$R *.dfm}

Procedure Draw(x, y : Integer; l, u : real);//рекурсивная процедура рисавания всего изображения
Procedure lineto1(x, y : Integer; l, u : real); //процедура рисования линии по заданным координатам
Begin
   Form1.Canvas.MoveTo(x,y);
   Form1.Canvas.LineTo(Round(x + l * cos(u)), Round(y - l * sin(u)));
End;
Begin
   If l > max then
    Begin
      l := l * 0.7;
      lineto1(x, y, l, u);
      x := Round(x + l * cos(u));
      y := Round(y - l * sin(u));
      Draw(x, y, l, u + pi / strtoint(form1.edit2.text));{Угол поворота 1}
      Draw(x, y, l, u - pi / strtoint(form1.edit3.text));{Угол поворота 2}
   End;
end;
procedure TForm1.Button1Click(Sender: TObject);
var x1,y1,x2,y2:integer;
    a:real;
begin
form1.Canvas.Brush.Color:=clwhite;
form1.Canvas.Rectangle(0, 0, Form1.Width, Form1.Height);
max:=StrToInt(Edit1.Text); //водим число 1,2,3....
x1:=Form1.ClientWidth div 2; //середина формы
y1:=Form1.ClientHeight - 100; //100 пикселей от нижнего края
Draw(x1, y1, Form1.ClientHeight div 3, pi/2)//размер рисунка 2/3 высоты формы, самый оптимальный
end;                                         //угол между ветвями 90 град.

end.

</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://www.studcode.ru/archiv/fraktalnoe-derevo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Создание почтового клиента на Delphi</title>
		<link>http://www.studcode.ru/archiv/sozdanie-pochtovogo-klienta-na-delphi/</link>
		<comments>http://www.studcode.ru/archiv/sozdanie-pochtovogo-klienta-na-delphi/#comments</comments>
		<pubDate>Fri, 06 Nov 2009 21:55:56 +0000</pubDate>
		<dc:creator>archey</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Курсовые проекты]]></category>
		<category><![CDATA[исходники]]></category>
		<category><![CDATA[курсовые]]></category>

		<guid isPermaLink="false">http://www.studcode.ru/?p=577</guid>
		<description><![CDATA[Работа с почтой в Delphi 7
Основное предназначение электронной почты – дать пользователям возможность общаться друг с другом. Сам процесс общения происходит путем пересылки текстовых и прочих файлов, подобно тому, как при обычной почтовой переписке люди обмениваются письмами, открытками и прочей корреспонденцией. Уникальность электронной почты как сетевого сервиса, состоит в том, что за счет имеющихся шлюзовых [...]]]></description>
			<content:encoded><![CDATA[<h1>Работа с почтой в Delphi 7</h1>
<p>Основное предназначение электронной почты – дать пользователям возможность общаться друг с другом. Сам процесс общения происходит путем пересылки текстовых и прочих файлов, подобно тому, как при обычной почтовой переписке люди обмениваются письмами, открытками и прочей корреспонденцией. Уникальность электронной почты как сетевого сервиса, состоит в том, что за счет имеющихся шлюзовых соединений между различными сетями почта может доставляться практически в любые и из любых мировых сетей, объединяя их в единое сетевое пространство. Причем скорость доставки корреспонденции зависит не столько от физической удаленности почтовых серверов друг от друга, сколько от пропускной способностью тех узлов, через которые послание доставляется адресату. Другая особенность электронной почты – ее универсальность. Услугами почты можно воспользоваться как при постоянном, так и при сеансовом доступе к Сети.<br />
Темой курсового проекта является разработка почтового программы для операционной системы Windows.<br />
Цель: создать полноценный почтовый клиент для приема и отправки писем посредством протокола POP3. Организовать возможность отправки писем с вложениями, отправку и прием писем в формате HTML с актуальной кодировкой. Обеспечить автоматическую проверку почты через определенные моменты времени.<br />
<span id="more-577"></span><br />
Объектом курсового проекта является изучение почтовых протоколов SMTP, POP3, IMAP3 и создание приложения для получения и отправки сообщений с почтовых серверов.<br />
Предмет: Программное обеспечение системы<br />
Задачи. Для достижения цели нам пришлось решить следующие задачи:<br />
•	Изучить научную литературу<br />
•	Проанализировать программное обеспечение выпущенное ранее<br />
•	Подготовить схему выполнения<br />
•	Написать код программы<br />
•	Отладить и протестировать программу на наличие ошибок<br />
Описание основных алгоритмов<br />
Получение и отправка писем реализовано с помощью библиотеки Internet Direct 9 (INDY) и классов POP3 и SMTP встроенных в Delphi<br />
Получение писем</p>
<pre><code>begin
 WebBrowser1.Navigate('about:blank');
 POP3.Host:=popHost; // адресс почтового сервера
 POP3.Port:=popPort;           // порт по которому будет осуществляться подключение
 POP3.Username:=Username; // Логин пользователя
 POP3.Password:=Pass;   // пароль пользователя
 POP3.Connect; // подключение по протоколу POP3, по настрокам в компоненте IdPOP3, с именем POP3
 numPosts:=POP3.CheckMessages;
 Memo1.Clear;   // очистка компонента memo для отображения текста письма.
 Memo1.Lines.Add(inttostr(numPosts));
 StringGrid1.RowCount:=numPosts+1;
 for i:=1 to numPosts do
 begin
IdMessage.Clear; // очистка буфера для сообщения
POP3.Retrieve(i,IdMessage);  // получение одного сообщения
Memo1.Lines.AddStrings(IdMessage.Body); // передача сообщения из компонента IdMessage в memo
Stringgrid1.Cells[0,i]:=IdMessage.From.Name;
 	Stringgrid1.Cells[1,i]:=IdMessage.Subject;;
Stringgrid1.Cells[2,i]:=FormatDateTime('dd mmm', IdMessage.Date);//yyyy hh:mm:ss полная дата
 end;
 // вывод в компоненты Label информации о сообщении.
 Label1.Caption := IdMessage.From.Name;
 Label2.Caption := IdMessage.Recipients.EmailAddresses;

 Label4.Caption := IdMessage.Subject;
 Label5.Caption := FormatDateTime('dd mmm yyyy hh:mm:ss', IdMessage.Date);
 Label6.Caption := IdMessage.ReceiptRecipient.Text;
 Label7.Caption := IdMessage.Organization;

 POP3.Delete(1); // удаление с сервера, полученного сообщения
 POP3.Disconnect;   // разрыв связи</code></pre>
<p>Методы. Было выбрано использование два почтового протокола: POP3 для приема почты с сервера и SMTP для отправки на сервер.<br />
Гипотеза.  Программа предназначена для удобного чтения электронной почты, написанию и отправки писем адресатам.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.studcode.ru/archiv/sozdanie-pochtovogo-klienta-na-delphi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Графика. Зеркальное отражение.</title>
		<link>http://www.studcode.ru/archiv/grafika-zervalnoe-otrazhenie/</link>
		<comments>http://www.studcode.ru/archiv/grafika-zervalnoe-otrazhenie/#comments</comments>
		<pubDate>Fri, 06 Nov 2009 21:51:54 +0000</pubDate>
		<dc:creator>sleepes</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[исходники]]></category>
		<category><![CDATA[лабы]]></category>

		<guid isPermaLink="false">http://www.studcode.ru/?p=565</guid>
		<description><![CDATA[Тут как бы и писать особо нечего)
Входных параметров всего два: изображение и булева переменная. Если True, то отображение горизонтальное, иначе вертикальное.

Юзайте на здоровье

procedure FlipBitmap(Bitmap: TBitmap; FlipHor: Boolean);
{Зеркальное отражение изображения.
 Если FlipHor = True, то отражение по горизонтали,
 иначе по вертикали.}
var
  x, y, W, H: Integer;
  Pixel_1, Pixel_2: PRGBTriple;
  MemPixel: TRGBTriple;
begin
  Bitmap.PixelFormat [...]]]></description>
			<content:encoded><![CDATA[<p>Тут как бы и писать особо нечего)<br />
Входных параметров всего два: изображение и булева переменная. Если True, то отображение горизонтальное, иначе вертикальное.<br />
<span id="more-565"></span><br />
Юзайте на здоровье</p>
<pre><code>
procedure FlipBitmap(Bitmap: TBitmap; FlipHor: Boolean);
{Зеркальное отражение изображения.
 Если FlipHor = True, то отражение по горизонтали,
 иначе по вертикали.}
var
  x, y, W, H: Integer;
  Pixel_1, Pixel_2: PRGBTriple;
  MemPixel: TRGBTriple;
begin
  Bitmap.PixelFormat := pf24Bit;
  W := Bitmap.Width - 1;
  H := Bitmap.Height - 1;
  if FlipHor then {отражение по горизонтали}
    for y := 0 to H do
    begin
      {помещаем оба указателя на строку H:}
      Pixel_1 := Bitmap.ScanLine[y];
      Pixel_2 := Bitmap.ScanLine[y];
      {помещаем второй указатель в конец строки:}
      Inc(Pixel_2, W);
      {цикл идёт только до середины строки:}
      for x := 0 to W div 2 do
      begin
        {симметричные точки обмениваются цветами:}
        MemPixel := Pixel_1^;
        Pixel_1^ := Pixel_2^;
        Pixel_2^ := MemPixel;
        Inc(Pixel_1); {смещаем указатель вправо}
        Dec(Pixel_2); {смещаем указатель влево}
      end;
    end
  else {отражение по вертикали}
    {цикл идёт только до средней строки:}
    for y := 0 to H div 2 do
    begin
      {помещаем первый указатель на строку H,
       а второй на строку симметричную H:}
      Pixel_1 := Bitmap.ScanLine[y];
      Pixel_2 := Bitmap.ScanLine[H - y];
      for x := 0 to W do
      begin
        {симметричные точки обмениваются цветами:}
        MemPixel := Pixel_1^;
        Pixel_1^ := Pixel_2^;
        Pixel_2^ := MemPixel;
        Inc(Pixel_1); {смещаем указатель вправо}
        Inc(Pixel_2); {смещаем указатель вправо}
      end;
    end;
end;
</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://www.studcode.ru/archiv/grafika-zervalnoe-otrazhenie/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Графика. Эффект инея.</title>
		<link>http://www.studcode.ru/archiv/grafika-effekt-ineya/</link>
		<comments>http://www.studcode.ru/archiv/grafika-effekt-ineya/#comments</comments>
		<pubDate>Fri, 06 Nov 2009 21:46:06 +0000</pubDate>
		<dc:creator>sleepes</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[исходники]]></category>
		<category><![CDATA[лабы]]></category>

		<guid isPermaLink="false">http://www.studcode.ru/?p=559</guid>
		<description><![CDATA[Эффект инея так же может быть исспользована в качестве фильтра для графического редактора. Процедура как бы рассевает пиксили изображения в радиусе Hor, Ver: Integer;, тем самым создается эффект стекла или же инея, кому как удобней 

Пользуйтесь на здоровье&#8230;

procedure Disorder(Bitmap: TBitmap; Hor, Ver: Integer; BackColor: TColor);

  function RandomInRadius(Num, Radius: Integer): Integer;
  begin
   [...]]]></description>
			<content:encoded><![CDATA[<p>Эффект инея так же может быть исспользована в качестве фильтра для графического редактора. Процедура как бы рассевает пиксили изображения в радиусе Hor, Ver: Integer;, тем самым создается эффект стекла или же инея, кому как удобней <img src='http://www.studcode.ru/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /><br />
<span id="more-559"></span><br />
Пользуйтесь на здоровье&#8230;</p>
<pre><code>
procedure Disorder(Bitmap: TBitmap; Hor, Ver: Integer; BackColor: TColor);

  function RandomInRadius(Num, Radius: Integer): Integer;
  begin
    if Random(2) = 0 then
      Result := Num + Random(Radius)
    else
      Result := Num - Random(Radius);
  end;

type
  TRGB = record
    B, G, R: Byte;
  end;
  pRGB = ^TRGB;
var
  x, y, WW, HH, xr, yr: Integer;
  Dest1, Dest2, Src1, Src2: PRGB;
  Bmp: TBitmap;
begin
  Randomize;
  Bitmap.PixelFormat := pf24Bit;
  Bmp := TBitmap.Create;
  try
    Bmp.Assign(Bitmap);
    WW := Bitmap.Width - 1;
    HH := Bitmap.Height - 1;
    Bitmap.Canvas.Brush.Color := BackColor;
    Bitmap.Canvas.FillRect(Rect(0, 0, WW + 1, HH + 1));
    for y := 0 to HH do
    begin
      for x := 0 to WW do
      begin
        xr := RandomInRadius(x, Hor);
        yr := RandomInRadius(y, Ver);
        if (xr >= 0) and (xr < WW) and (yr >= 0) and (yr < HH) then
        begin
          Src1 := Bmp.ScanLine[y];
          Src2 := Bmp.ScanLine[yr];
          Dest1 := Bitmap.ScanLine[y];
          Dest2 := Bitmap.ScanLine[yr];
          Inc(Src1, x);
          Inc(Src2, xr);
          Inc(Dest1, x);
          Inc(Dest2, xr);
          Dest1^ := Src2^;
          Dest2^ := Src1^;
        end;
      end;
    end;
  finally
    Bmp.Free;
  end;
end;
</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://www.studcode.ru/archiv/grafika-effekt-ineya/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Графика. Эффект блоков.</title>
		<link>http://www.studcode.ru/archiv/grafika-effekt-blokov/</link>
		<comments>http://www.studcode.ru/archiv/grafika-effekt-blokov/#comments</comments>
		<pubDate>Fri, 06 Nov 2009 21:35:13 +0000</pubDate>
		<dc:creator>sleepes</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[исходники]]></category>
		<category><![CDATA[лабы]]></category>

		<guid isPermaLink="false">http://www.studcode.ru/?p=554</guid>
		<description><![CDATA[В ходе выполнения курсового проекта (Графический редактор) мной был разработан фильтр для преобразования BMP изображений. Данный фильтр позволяет получить эффект блоков. Выполнен он в виде небольшой процедуры, которая работает с блоками пикселей.
Процедуре передается 5 параметров: Bitmap: TBitmap;(наше изображение); Hor, Ver:  Integer;(размеры наших блоков); MaxOffset:  Integer;(на сколько пикселей будем смещать); BackColor:TColor);(цвет, которым будем закрашивать [...]]]></description>
			<content:encoded><![CDATA[<p>В ходе выполнения курсового проекта (Графический редактор) мной был разработан фильтр для преобразования BMP изображений. Данный фильтр позволяет получить эффект блоков. Выполнен он в виде небольшой процедуры, которая работает с блоками пикселей.<br />
Процедуре передается 5 параметров: Bitmap: TBitmap;(наше изображение); Hor, Ver:  Integer;(размеры наших блоков); MaxOffset:  Integer;(на сколько пикселей будем смещать); BackColor:TColor);(цвет, которым будем закрашивать промежутки).<br />
<span id="more-554"></span></p>
<pre><code>
procedure Blocks(Bitmap: TBitmap; Hor, Ver, MaxOffset:
  Integer; BackColor: TColor);
{вырезаем прямоугольники со сторонами Hor Ver
и копируем их в радиусе MaxOffset}

  function RandomInRadius(Num, Radius: Integer): Integer;
  begin
    if Random(2) = 0 then
      Result := Num + Random(Radius)
    else
      Result := Num - Random(Radius);
  end;

var
  x, y, xd, yd: Integer;
  Bmp: TBitmap;
begin
  Bmp := TBitmap.Create;
  try
    Bmp.Assign(Bitmap);
    Bitmap.Canvas.Brush.Color := BackColor;
    Bitmap.Canvas.FillRect(Rect(0, 0, Bitmap.Width, Bitmap.Height));
    xd := (Bitmap.Width - 1) div Hor;
    yd := (Bitmap.Height - 1) div Ver;
    Randomize;
    for x := 0 to xd do
      for y := 0 to yd do
        BitBlt(Bitmap.Canvas.Handle,
          RandomInRadius(Hor * x, MaxOffset),
          RandomInRadius(Ver * y, MaxOffset),
          Hor, Ver, Bmp.Canvas.Handle, Hor * x, Ver * y, SRCCOPY);
  finally
    Bmp.Free;
  end;
end;
</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://www.studcode.ru/archiv/grafika-effekt-blokov/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>D-деревья.</title>
		<link>http://www.studcode.ru/archiv/d-derevya/</link>
		<comments>http://www.studcode.ru/archiv/d-derevya/#comments</comments>
		<pubDate>Thu, 05 Nov 2009 22:36:27 +0000</pubDate>
		<dc:creator>sleepes</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[исходники]]></category>
		<category><![CDATA[лабы]]></category>

		<guid isPermaLink="false">http://www.studcode.ru/?p=582</guid>
		<description><![CDATA[Тема. D-деревья.
Цель: 

изучить устройство и принцип заполнения D-деревьев.
научиться использовать на практике основные алгоритмы по обработке D-деревьев

Ход работы
Разработайте программу в соответствии со следующими требованиями:

 Создание D-дерева (случайное / ручной ввод);
 добавление элемента в D-дерево;
 удаление элемента из D-дерева;
 все операции должны быть наглядно представлены.
 Важно: обязательно соблюдение инварианта!


На форму нужно кинуть только таймер.
Вот собственно код:

unit Unit1;

interface

uses
 [...]]]></description>
			<content:encoded><![CDATA[<p><span style="text-decoration: underline;"><strong>Тема. </strong></span>D-деревья.<br />
<span style="text-decoration: underline;"><strong>Цель: </strong></span></p>
<ul>
<li>изучить устройство и принцип заполнения D-деревьев.</li>
<li>научиться использовать на практике основные алгоритмы по обработке D-деревьев</li>
</ul>
<p style="text-align: center;"><strong>Ход работы</strong></p>
<p>Разработайте программу в соответствии со следующими требованиями:</p>
<ol>
<li> Создание D-дерева (случайное / ручной ввод);</li>
<li> добавление элемента в D-дерево;</li>
<li> удаление элемента из D-дерева;</li>
<li> все операции должны быть наглядно представлены.</li>
<li> Важно: обязательно соблюдение инварианта!</li>
</ol>
<p><span id="more-582"></span><br />
На форму нужно кинуть только таймер.<br />
Вот собственно код:</p>
<pre><code>
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, Math;

type
  TForm1 = class(TForm)
    Timer1: TTimer;
    procedure FormCreate(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

const D=4;

type TIach=record
  x,y,znach:integer;
end;

var
  Form1: TForm1;
  Ia:array[0..999]of TIach;
  Xc,Yc,Col:integer;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var i,j:integer;
begin
randomize;
Ia[0].x:=form1.Width div 2;
Ia[0].Y:=0;
Ia[0].znach:=0;
Col:=1;
Xc:=0;
Yc:=1;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var i,x:integer;
begin
form1.Canvas.FillRect(rect(0,0,form1.Width,form1.Height));
x:=0;
for i:=1 to Col-1 do
  begin
  x:=x+1;
  form1.Canvas.MoveTo(Ia[i].x,Ia[i].y*36+8);
  form1.Canvas.LineTo(Ia[(i-1)div D].x,Ia[(i-1)div D].y*36+8);
  end;

for i:=0 to Col-1 do
  begin
  form1.Canvas.Ellipse(Ia[i].x-16,Ia[i].y*36,Ia[i].x+16,Ia[i].y*36+32);
  form1.Canvas.TextOut(Ia[i].x-4,Ia[i].y*36+12,inttostr(Ia[i].znach));
  end;
end;

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var ax,ay,i:integer;
begin
if(Button=mbLeft)then
  begin
  form1.Caption:=inttostr(Xc)+':'+floattostr(power(2,Yc));
  Ia[Col].x:=round(form1.Width/(power(D,Yc)*2)*(Xc*2+1));
  Ia[Col].Y:=Yc;
  Ia[Col].znach:=Col;
  Col:=Col+1;
  Xc:=Xc+1;
  if(Xc>=round(power(D,Yc)))then
    begin
    Yc:=Yc+1;
    Xc:=0;
    end;
  end
else
  begin
  ay:=Y div 32;
  ax:=round( (x-16)/(form1.Width/(power(D,ay))) );
  for i:=round(power(D,ay)-1)+ax to Col-1 do
    Ia[ i ].znach:=Ia[ i+1 ].znach;
  Col:=Col-1;
  Xc:=Xc-1;
  if(Xc<0)then
    begin
    Yc:=Yc-1;
    Xc:=round(power(D,Yc))-1;
    end;
  form1.Caption:=inttostr(ay)+':'+inttostr(ax)+':'+inttostr( round(power(D,ay)-1));
  end;
end;

end.

</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://www.studcode.ru/archiv/d-derevya/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Стек связной.</title>
		<link>http://www.studcode.ru/archiv/stek-svyaznoj/</link>
		<comments>http://www.studcode.ru/archiv/stek-svyaznoj/#comments</comments>
		<pubDate>Thu, 05 Nov 2009 22:19:01 +0000</pubDate>
		<dc:creator>sleepes</dc:creator>
				<category><![CDATA[C]]></category>
		<category><![CDATA[исходники]]></category>
		<category><![CDATA[лабы]]></category>

		<guid isPermaLink="false">http://www.studcode.ru/?p=580</guid>
		<description><![CDATA[Тема: Линейные списки.
Цель: Закрепить на практике знания по устройству и функционированию линейных списков. Выполнить на практике один из типов списков.
Закодировать на языке заданном в варианте языке программирования один из типов линейных типов. При выполнении задания каждую операцию над списком необходимо оформить отдельной процедурой, функцией или методом.


  #include 
  #include

  struct Tconteiner
  [...]]]></description>
			<content:encoded><![CDATA[<p><strong><span style="text-decoration: underline;">Тема:</span></strong> Линейные списки.<br />
<strong><span style="text-decoration: underline;">Цель:</span></strong> Закрепить на практике знания по устройству и функционированию линейных списков. Выполнить на практике один из типов списков.</p>
<p>Закодировать на языке заданном в варианте языке программирования один из типов линейных типов. При выполнении задания каждую операцию над списком необходимо оформить отдельной процедурой, функцией или методом.</p>
<p><span id="more-580"></span></p>
<pre><code>
  #include <iostream.h>
  #include
<math.h>
  struct Tconteiner
    {
     float znach;
     Tconteiner *next;
    };
  struct Torder
    {
     Tconteiner  *top;
    };
  void add(Torder *order, float znach)
    {
     Tconteiner *temp;

     temp=new Tconteiner;

     if (order->top!=NULL)
       {
	temp->next=order->top;
	order->top=temp;
	order->top->znach=znach;
       };
     if (order->top==NULL)
       {
	temp->znach=znach;
	temp->next=NULL;
	order->top=temp;
       }

    }

  void show(Torder *order)
    {
     Tconteiner *temp;
     temp=order->top;

     if (temp==NULL)
      { cout<<"pusto"<< endl;
	return;
      }
	cout<<endl;

     if (temp!=NULL)
       {
	do
	  {
	   cout << temp->znach << endl;
	   temp=temp->next;
	  }
	while (temp!=NULL);
       }
     cout << endl;

    }

  int del(Torder *order)
    {
     Tconteiner *gg;

     gg=new Tconteiner;
     gg=order->top;
     order->top=order->top->next;
     delete gg;
     return 1;
    }
  void nul(Torder *order)
    {
     order->top=NULL;
    }
  void main ()
    {
     Torder stek;
     float znach;
     int   menu, exit;

     nul(&#038;stek);
     exit=0;
     while (exit==0)
       {
	cout << "1   add element"  << endl << "2   del element" << endl
	     << "3   show stek" << endl << "4   exit" << endl;
	cin>>menu;
	switch (menu)
	  {
	   case 1: { cin>>znach;  add(&#038;stek, znach);  } ; break;
	   case 2: {if (del(&#038;stek)==1) cout<<"del"<<endl;};                          ; break;
	   case 3: show(&#038;stek);                         ; break;
	   default: exit=1;
	  }
       };

    }

</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://www.studcode.ru/archiv/stek-svyaznoj/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Множества. Операции над множествами.</title>
		<link>http://www.studcode.ru/archiv/mnozhestva-operacii-nad-mnozhestvami/</link>
		<comments>http://www.studcode.ru/archiv/mnozhestva-operacii-nad-mnozhestvami/#comments</comments>
		<pubDate>Wed, 04 Nov 2009 22:41:17 +0000</pubDate>
		<dc:creator>sleepes</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[исходники]]></category>
		<category><![CDATA[лабы]]></category>

		<guid isPermaLink="false">http://www.studcode.ru/?p=584</guid>
		<description><![CDATA[Тема. Множества.
Цель:

 повторить свойства множеств, основные операции
 изучить способы представления множеств

Ход работы
Решите задачу в соответствии с требованиями.
Требования:
а) множества должны быть представлены в виде списков
б) программа должна реализовывать базовые операции над множествами: объединение, пересечение, разность и дизъюнктивная сумма;
в) предусмотреть возможность задания внутренних и внешних имен множеств.
г) все операции должны быть наглядно представлены.



unit Unit1;

interface

uses
  Windows, Messages, [...]]]></description>
			<content:encoded><![CDATA[<p><strong><span style="text-decoration: underline;">Тема.</span></strong> Множества.<br />
<strong><span style="text-decoration: underline;">Цель:</span></strong></p>
<ul>
<li> повторить свойства множеств, основные операции</li>
<li> изучить способы представления множеств</li>
</ul>
<p><center><strong>Ход работы</strong></center></p>
<p>Решите задачу в соответствии с требованиями.<br />
Требования:<br />
а) множества должны быть представлены в виде списков<br />
б) программа должна реализовывать базовые операции над множествами: объединение, пересечение, разность и дизъюнктивная сумма;<br />
в) предусмотреть возможность задания внутренних и внешних имен множеств.<br />
г) все операции должны быть наглядно представлены.</p>
<p><span id="more-584"></span></p>
<pre><code>

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, Grids;

type
  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    StringGrid2: TStringGrid;
    Label1: TLabel;
    Label2: TLabel;
    StringGrid3: TStringGrid;
    Button1: TButton;
    RadioGroup1: TRadioGroup;
    Button2: TButton;
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    RadioButton3: TRadioButton;
    RadioButton4: TRadioButton;
    Button3: TButton;
    Button4: TButton;
    Timer1: TTimer;
    Timer2: TTimer;
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure Timer2Timer(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button3Click(Sender: TObject);
var i, col_ind,j,temp,pus,kol:integer;
num:string;
begin
for i:=0 to stringgrid1.ColCount do
  stringgrid1.cells[i,0]:='';  //очистили
randomize;
col_ind:=random(9)+1;
i:=1;
 while i&lt;= col_ind do
    begin
    temp:=0;
        num:=inttostr(random(10));
        for j:=0 to (stringgrid1.ColCount-1) do
         if stringgrid1.cells[j,0]=num then  temp:=1;

          if temp=0 then
          begin
               stringgrid1.cells[i-1,0]:=num;
               i:=i+1;
               //break;
             end;

    //end;
   end;

for i:=0 to (stringgrid1.colcount-1) do
  if stringgrid1.cells[i,0]='' then
     begin
       kol:=i-1;
       break;
     end;  //кол-во чисел в стринггриде

    for i:=0 to kol do
       for j:=0 to kol do
          if stringgrid1.cells[i,0]&lt;= col_ind2 do
    begin
    temp:=0;
        num2:=inttostr(random(10));
        for j:=0 to (stringgrid2.ColCount-1) do
         if stringgrid2.cells[j,0]=num2 then  temp:=1;

          if temp=0 then
          begin
               stringgrid2.cells[i-1,0]:=num2;
               i:=i+1;
             end;
   end;

   for i:=0 to (stringgrid2.colcount-1) do
  if stringgrid2.cells[i,0]='' then
     begin
       kol:=i-1;
       break;
     end;  //кол-во чисел в стринггриде

    for i:=0 to kol do
       for j:=0 to kol do
          if stringgrid2.cells[i,0]&lt;255 then form1.AlphaBlendValue:=form1.AlphaBlendValue+10; end; procedure TForm1.Timer2Timer(Sender: TObject); begin if form1.AlphaBlendValue&gt;5 then
form1.AlphaBlendValue:=form1.AlphaBlendValue-10;
if form1.AlphaBlendValue&lt;=5 then form1.Close;
end;

end.

// (c) Copyright 2009 Pecherskiy Anton. All rights reserved.

</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://www.studcode.ru/archiv/mnozhestva-operacii-nad-mnozhestvami/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Моделирование движения объектов. Аналоговые часы</title>
		<link>http://www.studcode.ru/archiv/modelirovanie-dvizheniya-obektov-analogovye-chasy/</link>
		<comments>http://www.studcode.ru/archiv/modelirovanie-dvizheniya-obektov-analogovye-chasy/#comments</comments>
		<pubDate>Wed, 28 Oct 2009 07:56:18 +0000</pubDate>
		<dc:creator>sleepes</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Теория алгоритмов]]></category>
		<category><![CDATA[исходники]]></category>
		<category><![CDATA[лабы]]></category>
		<category><![CDATA[лекции]]></category>
		<category><![CDATA[Учеба]]></category>

		<guid isPermaLink="false">http://www.studcode.ru/?p=279</guid>
		<description><![CDATA[Тема. Моделирование движения объектов.
Цель:
-	изучить основные формулы для моделирования движения объектов
-	написать программу моделирования стрелочных часов
Теоретическая часть
Точки на окружности
Задача. Имеется опорная точка с координатами &#60; x0, y0 &#62;. Необходимо нанести заданное ко-личество точек по воображаемой окружности с радиусом R вокруг опорной точки. Для ре-шения данной задачи представим себе часовой циферблат с нанесенными цифрами. Предпо-ложим, что первая точка [...]]]></description>
			<content:encoded><![CDATA[<p>Тема. Моделирование движения объектов.</p>
<p>Цель:</p>
<p>-	изучить основные формулы для моделирования движения объектов</p>
<p>-	написать программу моделирования стрелочных часов</p>
<p><strong>Теоретическая часть</strong></p>
<p>Точки на окружности</p>
<p>Задача. Имеется опорная точка с координатами &lt; x0, y0 &gt;. Необходимо нанести заданное ко-личество точек по воображаемой окружности с радиусом R вокруг опорной точки. Для ре-шения данной задачи представим себе часовой циферблат с нанесенными цифрами. Предпо-ложим, что первая точка всегда расположена на месте числа &#8220;12&#8243;. Тогда алгоритм решения будет выглядеть так:</p>
<p><span id="more-279"></span></p>
<p>Алгоритм 1. Нанесение точек по окружности</p>
<pre><code> CircleXY (N,X0, Y0,R)
 Pi=3.14159
a =360/N
g2r=pi/180
 for i =0 to N do
begin
 x =X0 – R* sin(a * i * g2r)
y =Y0 - R * cos(a * i * g2r)
DrawPoint(x, y)
 end </code></pre>
<p>Для рисования часовых отметок меток на циферблате можно использовать этот алго-ритм с N=12 а минутных &#8211; с N=60.</p>
<p>Имитация стрелочных часов</p>
<p>Задача заключается в том, чтобы выводить на экран изображение стрелочных часов, отсчитывающих время. Три стрелки &#8211; секундная, минутная и часовая должны перемещаться в соответствии с показанием компьютерных часов. Мы не будем здесь рассматривать про-грамму целиком, а остановимся лишь на принципиальных моментах.</p>
<p>Len_s, Len_m, Len_h – длины стрелок.</p>
<p>Hour, Min, Sec – текущее время.</p>
<p>Алгоритм 2. Расчет координат стрелок</p>
<p>Обладая показаниями часов можно вычислить координаты концов стрелок:</p>
<pre><code> // для секундной
alfa=g2r*6*sec;
  x_sec=x_center+len_s*sin(alfa);
 y_sec=y_center-len_s*cos(alfa);
line(x_center, y_center, x_sec, y_sec);
  // для минутной  alfa=g2r*6*min;  x_min=x_center+len_m*sin(alfa);
  y_min=y_center-len_m*cos(alfa);
 line(x_center, y_center, x_min, y_min);
 // для часовой
 alfa=g2r*30*sec*( Hour mod 12);
 x_hour=x_center+len_h*sin(alfa);
  y_hour=y_center-len_h*cos(alfa);
  line(x_center, y_center, x_hour, y_hour);</code></pre>
<p> <strong>Ход работы</strong><br />
1.	Разработайте программу в соответствии со следующими требованиями:</p>
<p>а)	возможность переключения между 12 / 24 часовым циферблатом;</p>
<p>б)	отображение электронных часов, на циферблате;</p>
<p><noindex><a href="http://depositfiles.com/files/epm16mxep" target="_blank">скачать аналоговые часы</a></noindex.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.studcode.ru/archiv/modelirovanie-dvizheniya-obektov-analogovye-chasy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

