ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² написании студСнчСских Ρ€Π°Π±ΠΎΡ‚
АнтистрСссовый сСрвис

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ сТатия ΠΈ восстановлСния Ρ„Π°ΠΉΠ»ΠΎΠ² с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ фиксированного Π±Π»ΠΎΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° постоянного смСщСния

ΠšΡƒΡ€ΡΠΎΠ²Π°ΡΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

Π Π°Π±ΠΎΡ‚Π° прилоТСния Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Π»Π°ΡΡŒ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠ°Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ². Использовались Ρ„Π°ΠΉΠ»Ρ‹ графичСского, тСкстового, ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΌΠ΅Π΄ΠΈΠΉΠ½ΠΎΠ³ΠΎ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ². ВсС Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ ΠΏΡ€ΠΎΡ†Π΅ΡΡΠ°Ρ… сТатия ΠΈΠ·Π»ΠΎΠΆΠ΅Π½Ρ‹ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° ΠΎΡΡ‚Π°Ρ‚ΠΎΠΊ производится Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅. Поиск ΠΊΠΎΠ΄ΠΎΠ²Ρ‹Ρ… слов Π² ΠΎΡΡ‚Π°Ρ‚ΠΊΠ΅ производится ΠΏΡƒΡ‚Π΅ΠΌ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… элСмСнтов ΠΊΠΎΠ΄ΠΎΠ²Ρ‹Ρ… слов. Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ ΠΈ Π·Π°ΠΏΠΈΡΡŒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹. ΠŸΡ€ΠΈ… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ сТатия ΠΈ восстановлСния Ρ„Π°ΠΉΠ»ΠΎΠ² с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ фиксированного Π±Π»ΠΎΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° постоянного смСщСния (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

ΠšΡ€Π°Ρ‚ΠΊΠΎΠ΅ описаниС Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Код ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ тСстирования прилоТСния

ΠšΡ€Π°Ρ‚ΠΊΠΎΠ΅ описаниС Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ срСды Delphi:

1. SaveDialog, OpenDialog. ΠšΠΎΠΏΠΎΠΌΠ½Π΅Π½Ρ‚Ρ‹ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для чтСния ΠΈ ΡΠΎΡ…ранСния Ρ„Π°ΠΉΠ»ΠΎΠ², Π° Ρ‚Π°ΠΊ ΠΆΠ΅ получСния названия Ρ„Π°ΠΉΠ»Π° ΠΈ Π΅Π³ΠΎ ΠΏΡƒΡ‚ΠΈ Π΄ΠΎ Π½Π΅Π³ΠΎ.

2. Button — ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΊΠ½ΠΎΠΏΠΊΠ°.

3. ListBox — ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, состоящий ΠΈΠ· ΡΡ‚Ρ€ΠΎΠΊ, Ρ…Ρ€Π°Π½ΠΈΡ‚ ΠΊΠΎΠ΄ΠΎΠ²Ρ‹Π΅ слова.

4. ProgressBar — ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ для отслСТивания этапов выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

5. Label — ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ для Π²Ρ‹Π²ΠΎΠ΄Π° строковых Π΄Π°Π½Π½Ρ‹Ρ….

ΠšΡ€Π°Ρ‚ΠΊΠΎΠ΅ описаниС Ρ€Π°Π±ΠΎΡ‚Ρ‹ прилоТСния:

1. ΠŸΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ Button1 «Π‘Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ для сТатия» происходит ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½ΠΈ считываСмого Ρ„Π°ΠΉΠ»Π° ΠΈ ΠΏΡƒΡ‚ΠΈ Π΄ΠΎ Π½Π΅Π³ΠΎ. Π˜Π·ΠΌΠ΅Ρ€ΡΠ΅Ρ‚ΡΡ Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ„Π°ΠΉΠ»Π° (функция FileSize). ΠŸΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΎΡ‡ΠΈΡ‰Π°ΡŽΡ‚ΡΡ Label.

2. ΠŸΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ Button2 «ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ» происходит ΠΎΠ±Π½ΡƒΠ»Π΅Π½ΠΈΠ΅ всСх Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… для Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. ЗапускаСтся процСсс считывания (ΠΏΠΎ-Π±Π°ΠΉΡ‚ΠΎΠ²ΠΎ) ΠΈ Π°Π½Π°Π»ΠΈΠ·Π° сТимаСмого Ρ„Π°ΠΉΠ»Π°, Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ высчитываСтся срСдняя Π΄Π»ΠΈΠ½Π½Π° ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠ³ΠΎ слова. Она Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° для опрСдСлСния возмоТности сТатия. Π’ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΠΈ ΠΎΡ‚ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° выводится сообщСниС ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ„Π°ΠΉΠ» ΠΌΠΎΠΆΠ½ΠΎ ΡΠΆΠΈΠΌΠ°Ρ‚ΡŒ, Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС, Ρ‡Ρ‚ΠΎ нСльзя. Π’Π°ΠΊ ΠΆΠ΅ формируСтся массив частот ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠΉ символов Π² Ρ„Π°ΠΉΠ»Π΅, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ для соотнСсСния ΠΊΠΎΠ΄ΠΎΠ²Ρ‹Ρ… слов ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π² Ρ„Π°ΠΉΠ»Π΅.

3. ΠŸΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ Button3 «Π‘ΠΆΠ°Ρ‚ΡŒ» происходит ΠΏΠΎΠ±Π°ΠΉΡ‚ΠΎΠ²ΠΎΠ΅ считываниС сТимаСмого Ρ„Π°ΠΉΠ»Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ BlockRead. Π”Π°Π»Π΅Π΅ происходит соотнСсСниС считанного Π±Π°ΠΉΡ‚Π° ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΌΡƒ слову. Алгоритм соотнСсСния основан Π½Π° Ρ‡Π°ΡΡ‚ΠΎΡ‚Π΅ появлСний символов Π² Ρ„Π°ΠΉΠ»Π΅. Π§Π΅ΠΌ Ρ‡Π°Ρ‰Π΅ Π΄Π°Π½Π½Ρ‹ΠΉ символ встрСчаСтся Π² Ρ„Π°ΠΉΠ»Π΅, Ρ‚Π΅ΠΌ мСньшСй Π΄Π»ΠΈΠ½Π½Ρ‹ Π΅ΠΌΡƒ присваиваСтся ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠ΅ слово. Π—Π°ΠΏΠΈΡΡŒ Π½ΠΎΠ²ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° производится с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ BlockWrite Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΏΠΎ-Π±Π°ΠΉΡ‚ΠΎΠ²ΠΎ. Новому Ρ„Π°ΠΉΠ»Ρƒ присваиваСтся Π½ΠΎΠ²ΠΎΠ΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅. Когда Ρ„Π°ΠΉΠ» ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ считан, выполняСтся ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡΡ‚Π°Π²ΡˆΠΈΡ…ΡΡ Π±ΠΈΡ‚ΠΎΠ². Если Ρ‚Π°ΠΊΠΎΠ²Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ, Ρ‚ΠΎ ΠΏΡƒΡΡ‚ΠΎΠ΅ пространство забиваСтся нулями Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° количСство Π±ΠΈΡ‚ΠΎΠ² Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π²Π½ΠΎ 8.

4. ΠŸΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ Button4 «Π‘Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ для восстановлСния» происходит ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½ΠΈ сТатого Ρ„Π°ΠΉΠ»Π°, ΠΏΡƒΡ‚ΠΈ Π΄ΠΎ Π½Π΅Π³ΠΎ.

5. ΠŸΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ Button5 «Π’ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ» происходит ΠΏΠΎΠ±Π°ΠΉΡ‚ΠΎΠ²ΠΎΠ³ΠΎ считываниС Ρ„Π°ΠΉΠ»Π°. Алгоритм разТатия состоит ΠΈΠ· Π΄Π²ΡƒΡ… этапов. На ΠΏΠ΅Ρ€Π²ΠΎΠΌ этапС происходит считываниС Ρ„Π°ΠΉΠ»Π° Π±Π»ΠΎΠΊΠ°ΠΌΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ Π² 1 Π±Π°ΠΉΡ‚. ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡΡ запись считанных Π±Π°ΠΉΡ‚ΠΎΠ² Π² ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ. Когда Π΄Π»ΠΈΠ½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ составляСт 16 символов ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅, начинаСтся Π°Π½Π°Π»ΠΈΠ· считанной ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ. ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡΡ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° ΡΠΎΠΎΡ‚вСтствиС ΠΊΠΎΠ΄ΠΎΠ²Ρ‹ΠΌ словам ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ запись ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² Π½ΠΎΠ²Ρ‹ΠΉ Ρ„Π°ΠΉΠ». На Π²Ρ‚ΠΎΡ€ΠΎΠΌ этапС производится ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° ΠΎΡΡ‚Π°Ρ‚ΠΎΠΊ ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Π»ΠΈΡˆΠ½ΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ… (случай, ΠΊΠΎΠ³Π΄Π° Π±Ρ‹Π»ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ нулями ΠΏΡ€ΠΈ сТатии).

Код ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, ComCtrls;

type

TForm1 = class (TForm)

ListBox1: TListBox;

OpenDialog1: TOpenDialog;

SaveDialog1: TSaveDialog;

Button1: TButton;

Button2: TButton;

Button3: TButton;

Label1: TLabel;

ProgressBar1: TProgressBar;

Button4: TButton;

Button5: TButton;

Label3: TLabel;

Label4: TLabel;

Label2: TLabel;

Label5: TLabel;

Label6: TLabel;

Label7: TLabel;

Label8: TLabel;

SaveDialog2: TSaveDialog;

OpenDialog2: TOpenDialog;

procedure Button1Click (Sender: TObject);

procedure FormCreate (Sender: TObject);

procedure Button2Click (Sender: TObject);

procedure Button3Click (Sender: TObject);

procedure Button4Click (Sender: TObject);

procedure Button5Click (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

f, f1, f2,f3: file;

buff: byte;

conR, conW: string;

a: array [0.255] of real; // массив вСроятностСй

word: array [0.255] of string; // массив ΠΊΠΎΠ΄ΠΎΠ²Ρ‹Ρ… слов

l: array [0.255] of byte; // массив Π΄Π»ΠΈΠ½ ΠΊΠΎΠ΄ΠΎΠ²Ρ‹Ρ… слов

e: array [0.255] of real; // массив Π½ΠΎΠΌΠ΅Ρ€ΠΎΠ² элСмСнтов

inf: array [0.255] of integer; // массив слуТСбной ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ

i, j, k, size, prog, buff1, buff3,check, dop: integer;

sl, sum, sort, sort1, buff2: real;

implementation

{$R *.dfm}

procedure TForm1. Button1Click (Sender: TObject);

begin

if OpenDialog1. Execute then

AssignFile (f, OpenDialog1. FileName); // считываСм имя Ρ„Π°ΠΉΠ»Π° ΠΈ ΠΏΡƒΡ‚ΡŒ Π΄ΠΎ Π½Π΅Π³ΠΎ

Reset (f, 1); // ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ Ρ„Π°ΠΉΠ» для чтСния ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ

size: =FileSize (f); // измСряСм Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ„Π°ΠΉΠ»Π°

Label4.Caption: =IntToStr (size) + ' Π±Π°ΠΉΡ‚';

// Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ„Π°ΠΉΠ»Π° Π² Label4

Label2.Caption: ='';

Label6.Caption: ='';

Label8.Caption: ='';

end;

procedure TForm1. Button2Click (Sender: TObject);

begin

ProgressBar1.Position: =0; // обнуляСм ProgressBar

prog: =0; // обнуляСм счСтчик для Progress Bar

sl: =0; // обнуляСм ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ срСднСй Π΄Π»ΠΈΠ½Π½Ρ‹

sum: =0; // обнуляСм счСтчик ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠΉ символов

sort: =0; // обнуляСм ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ для сортировки массива Π½ΠΎΠΌΠ΅Ρ€ΠΎΠ² элСмСнтов

sort1: =0;

buff: =0;

for i: =0 to 255 do

begin

e [i]: =i; // ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌ ΠΎΠ±Π½ΡƒΠ»Π΅Π½ΠΈΠ΅ элСмСнтов массивов ΠΊΠΎΠ΄ΠΎΠ²Ρ‹Ρ… слов, Π΄Π»ΠΈΠ½ ΠΊΠΎΠ΄ΠΎΠ²Ρ‹Ρ… слов, вСроятностСй ΠΈ Π½ΠΎΠΌΠ΅Ρ€ΠΎΠ² элСмСнтов.

l [i]: =0;

word [i]: ='';

a [i]: =0;

end;

while not EOF (f) do // считываСм Ρ„Π°ΠΉΠ» Π΄ΠΎ Π΅Π³ΠΎ окончания

begin

BlockRead (f, buff, 1); // считываСм Π±Π»ΠΎΠΊΠΈ Π² 1 Π±Π°ΠΉΡ‚

a [buff]: =a [buff] +1; // записываСм этот Π±Π°ΠΉΡ‚ Π² ΠΌΠ°ΡΡΠΈΠ²

prog: =prog+1;

ProgressBar1.Position: =round ((prog/size) *100);

end;

for i: =0 to 255 do

begin

word [i]: =ListBox1. Items. Strings [i]; // записываСм ΠΊΠΎΠ΄ΠΎΠ²Ρ‹Π΅ слова ΠΈΠ· ListBox1 Π² ΠΌΠ°ΡΡΠΈΠ² ΠΊΠΎΠ΄ΠΎΠ²Ρ‹Ρ… слов

if a [i] <>0 then // провСряСм Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Π±Π°ΠΉΡ‚Π° Π² ΠΌΠ°ΡΡΠΈΠ²Π΅

begin

sum: = sum+a [i]; // считаСм количСство ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠΉ Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π±Π°ΠΉΡ‚Π°

end;

end;

CloseFile (f); // Π·Π°ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ Ρ„Π°ΠΉΠ» послС чтСния

for i: =0 to 255 do

begin

for j: =0 to 254 do

begin

if (a [j] < a [j+1]) then

begin

sort: =a [j]; // ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌ сортировку массива Π½ΠΎΠΌΠ΅Ρ€ΠΎΠ² элСмСнтов

sort1: =e [j];

a [j]: =a [j+1];

a [j+1]: =sort;

e [j]: =e [j+1];

e [j+1]: =sort1;

end;

end;

end;

for k: =0 to 255 do

begin

if a [k] <>0 then // провСряСм Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ элСмСнтов Π² ΠΌΠ°ΡΡΠΈΠ²Π΅

begin

a [k]: =a [k] /sum; // считаСм Ρƒ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ символа

l [k]: =length (word [k]); // высчитываСм Π΄Π»ΠΈΠ½Ρƒ ΠΊΠΎΠ΄ΠΎΠ²Ρ‹Ρ… слов

sl: =sl+l [k] *a [k]; // ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ срСднСй Π΄Π»ΠΈΠ½Π½Ρ‹

end;

end;

Label2.Caption: =FloatToStr (sl); // Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ срСднСй Π΄Π»ΠΈΠ½Ρ‹

if sl < 8 then // провСряСм Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ срСднСй Π΄Π»ΠΈΠ½Ρ‹

begin

Button3.Enabled: =true; // Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€ΡƒΠ΅ΠΌ ΠΊΠ½ΠΎΠΏΠΊΡƒ «Π‘ΠΆΠ°Ρ‚ΡŒ»

showmessage ('Π‘ΠΆΠ°Ρ‚ΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ');

end;

if sl > 8 then

begin

showmessage ('Π‘ΠΆΠ°Ρ‚ΠΈΠ΅ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ');

end;

end;

procedure TForm1. Button3Click (Sender: TObject);

begin

SaveDialog1.FileName: =OpenDialog1.FileName+'.gop';

// Π·Π°Π΄Π°Π΅ΠΌ Π½ΠΎΠ²ΠΎΠ΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ для сТатого Ρ„Π°ΠΉΠ»Π°

SaveDialog1.DefaultExt: ='gop';

if SaveDialog1. Execute then

begin

AssignFile (f1, SaveDialog1. FileName);

Rewrite (f1,1); // ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ Ρ„Π°ΠΉΠ» для записи

end;

buff1: =0;

i: =0;

while i <> 256 do // записываСм ΡΠ»ΡƒΠΆΠ΅Π±Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π² Π½ΠΎΠ²Ρ‹ΠΉ Ρ„Π°ΠΉΠ».

begin

buff1: =StrToInt (FloatToStr (e [i]));

BlockWrite (f1,buff1,1);

Reset (f, 1);

i: =i+1;

end;

buff1: =0;

seek (f1,256); // осущСствляСм ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π½Π° 256-ΠΎΠΉ Π±Π°ΠΉΡ‚ Π² Ρ„Π°ΠΉΠ»Π΅

ProgressBar1.Position: =0;

prog: =0;

while not EOF (f) do // считываСм Ρ„Π°ΠΉΠ» Π΄ΠΎ Π΅Π³ΠΎ окончания

begin

BlockRead (f, buff, 1); // считываСм Π±Π»ΠΎΠΊΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 1 Π±Π°ΠΉΡ‚

buff1: =buff1+1;

prog: =prog+1;

for i: =0 to 255 do

begin

if buff=e [i] then // провСряСм совпадСния

begin

conR: =conR+word [i]; // записываСм ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠ΅ слово

if length (conR) >=8 then // провСряСм Π΄Π»ΠΈΠ½Ρƒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ

begin

conW: =copy (conR, 1,8); // ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅ΠΌ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ 8 символов

buff2: = ((strtoint (conW [1])) *128) + ((strtoint (conW [2])) *64) + ((strtoint (conW [3])) *32) + ((strtoint (conW [4])) *16) + ((strtoint (conW [5])) *8) + ((strtoint (conW [6])) *4) + ((strtoint (conW [7])) *2) + (strtoint (conW [8]));

// ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΠΌ ΡΠΊΠΎΠΏΡ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π² Π΄Π΅ΡΡΡ‚ΠΈΡ‡Π½ΠΎΠ΅ число

buff3: =strtoint (floattostr (buff2));

BlockWrite (f1,buff3,1); // записываСм Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π² Π½ΠΎΠ²Ρ‹ΠΉ Ρ„Π°ΠΉΠ»

Delete (conR, 1,8); // удаляСм ΠΏΠ΅Ρ€Π²Ρ‹Π΅ 8 символов

end;

if (EOF (f) =true) and (conR<>'') and (length (conR) <8) then

// провСряСм Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ остатка

begin

k: =0;

check: =length (conR); // вычисляСм Π΄Π»ΠΈΠ½Ρƒ остатка

dop: =8-check; // вычисляСм количСство Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… для заполнСния Π±ΠΈΡ‚ΠΎΠ²

while k<>dop do // Ρ†ΠΈΠΊΠ» дополнСния нулями

begin

conR: =conR+'0'; // дописываСм Π½ΡƒΠ»ΠΈ

k: =k+1;

end;

conW: =copy (conR, 1,8); // ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅ΠΌ Π΄Π°Π½Π½Ρ‹Π΅

buff2: = ((strtoint (conW [1])) *128) + ((strtoint (conW [2])) *64) + ((strtoint (conW [3])) *32) + ((strtoint (conW [4])) *16) + ((strtoint (conW [5])) *8) + ((strtoint (conW [6])) *4) + ((strtoint (conW [7])) *2) + (strtoint (conW [8]));

// ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΠΌ ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π² Π΄Π΅ΡΡΡ‚ΠΈΡ‡Π½ΠΎΠ΅ число

buff3: =strtoint (floattostr (buff2));

BlockWrite (f1,buff3,1); // записываСм ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ значСния

end;

end;

end;

ProgressBar1.Position: =Round ((prog/size) *100);

end;

Label6.Caption: =Inttostr (FileSize (f1)) + ' Π±Π°ΠΉΡ‚';

// Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°

Label8.Caption: =IntToStr (Round (100- (FileSize (f1) *100/size))) + ' %';

// считаСм ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚ сТатия Ρ„Π°ΠΉΠ»Π°

ShowMessage ('Π€Π°ΠΉΠ» ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ сТат');

CloseFile (f); // Π·Π°ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ Ρ„Π°ΠΉΠ»Ρ‹

CloseFile (f1);

conR: =''; // обнуляСм ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅

conW: ='';

Button3.Enabled: =false;

end;

procedure TForm1. Button4Click (Sender: TObject);

begin

if OpenDialog2. Execute then

AssignFile (f2,OpenDialog2.FileName); // считываСм имя Ρ„Π°ΠΉΠ»Π° ΠΈ ΠΏΡƒΡ‚ΡŒ Π΄ΠΎ Π½Π΅Π³ΠΎ

Reset (f2,1); // ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ Ρ„Π°ΠΉΠ» для чтСния ΠΈ Π·Π°ΠΏΠΈΡΠΈ

size: =FileSize (f2); // Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ„Π°ΠΉΠ»Π°

Label4.Caption: =IntToStr (size) + ' Π±Π°ΠΉΡ‚';

Label2.Caption: ='';

Label6.Caption: ='';

Label8.Caption: ='';

Button5.Enabled: =true;

for i: =0 to 255 do

begin

BlockRead (f2,buff, 1);

inf [i]: =buff; // Π·Π°Π΄Π°Π΅ΠΌ соотвСтствиС ΠΏΠΎ ΡΠ»ΡƒΠΆΠ΅Π±Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ

word [i]: =ListBox1. Items. Strings [i]; // считываСм массив ΠΊΠΎΠ΄ΠΎΠ²Ρ‹Ρ… слов

end;

end;

function IntToBin (n: Integer): String; // ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ ΠΈΠ· Π΄Π΅ΡΡΡ‚ΠΈΡ‡Π½ΠΎΠ³ΠΎ значСния Π² Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ΅

var

m: integer;

begin

Result: ='';

while n<>0 do

begin

if n and 1=0 then Result: ='0'+Result else Result: ='1'+Result;

n: =n shr 1;

end;

if length (result) <8 then

begin

for m: =1 to 8-length (result) do result: ='0'+result;

end;

end;

procedure TForm1. Button5Click (Sender: TObject);

begin

if SaveDialog2. Execute then

begin

ProgressBar1.Position: =0;

prog: =0;

AssignFile (f3, SaveDialog2. FileName); // считываСм имя Ρ„Π°ΠΉΠ»Π° ΠΈ ΠΏΡƒΡ‚ΡŒ Π΄ΠΎ Π½Π΅Π³ΠΎ

ReWrite (f3,1); // ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ Ρ„Π°ΠΉΠ» для записи

conR: =''; // обнуляСм Ρ€Π°Π±ΠΎΡ‡ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅

conW: ='';

seek (f2,256); // ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π½Π° 256-ΠΎΠΉ Π±Π°ΠΉΡ‚

form1.Refresh;

While not EOF (f2) do // считываСм Ρ„Π°ΠΉΠ» Π΄ΠΎ Π΅Π³ΠΎ окончания

begin

if length (conR) <16 then // провСряСм Π΄Π»ΠΈΠ½Ρƒ Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ

begin

BlockRead (f2,buff, 1); // считываСм Ρ„Π°ΠΉΠ» ΠΏΠΎ 1 Π±Π°ΠΉΡ‚Ρƒ

conR: =conR+IntToBin (buff); // ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΠΌ считанный Π±Π°ΠΉΡ‚ Π² Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ΅ число

prog: =prog+1;

end;

if length (conR) >=16 then // провСряСм Π΄Π»ΠΈΠ½Ρƒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ

Π”Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠΈΠΉ ΠΊΠΎΠ΄ основан Π½Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… элСмСнтов ΠΊΠΎΠ΄ΠΎΠ²Ρ‹Ρ… слов. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ΠΎΠ²Ρ‹Π΅ слова ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠ΅ смСщСниС ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΎΡ‚ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… ΠΊΠΎΠ΄ΠΎΠ²Ρ‹Ρ… слов Π±Π΅Π· смСщСния появлСниСм Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠ³ΠΎ слова Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π½ΡƒΠ»Π΅ΠΉ, Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ всСго Π΄Π²Π° элСмСнта Π² ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΌ словС. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ массив разбиваСтся Π½Π° ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΊΠΈ, Ρ‡Ρ‚ΠΎ ускоряСт поиск подходящих ΠΊΠΎΠ΄ΠΎΠ²Ρ‹Ρ… слов. Для ΠΏΠ΅Ρ€Π²Ρ‹Ρ… 6 элСмСнтов массива ΠΊΠΎΠ΄ΠΎΠ²Ρ‹Ρ… слов достаточно ΠΎΠ΄Π½ΠΎΠ³ΠΎ условия ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ.

begin

if conR ='1' then

begin

conW: =copy (conR, 1,2); // ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅ΠΌ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠ΅ слово

for i: =0 to 1 do

begin

if word [i] =conW then // сравниваСм массив ΠΊΠΎΠ΄ΠΎΠ²Ρ‹Ρ… слов Π² Π·Π°Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΊΠ΅ с Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠ²Ρ‹ΠΌ словом

begin

BlockWrite (f3, inf [i], 1); // записываСм ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ элСмСнт Π² Ρ„Π°ΠΉΠ»

Delete (conR, 1,2); // удаляСм ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠ΅ слово

break; // ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π΅ΠΌ Ρ†ΠΈΠΊΠ»

end;

end;

end

else

if conR ='1' then

begin

conW: =copy (conR, 1,4);

for i: =2 to 5 do

begin

if word [i] =conW then

begin

BlockWrite (f3, inf [i], 1);

Delete (conR, 1,4);

Break;

end;

end;

end

else

if (conR ='0') and (conR ='1') then

begin

conW: =copy (conR, 1,6);

for i: =6 to 13 do

begin

if word [i] =conW then

begin

BlockWrite (f3, inf [i], 1);

Delete (conR, 1,6);

Break;

end;

end;

end

else

if (conR ='0') and (conR ='1') then

begin

conW: =copy (conR, 1,8);

for i: =14 to 29 do

begin

if word [i] =conW then

begin

BlockWrite (f3, inf [i], 1);

Delete (conR, 1,8);

Break;

end;

end;

end

else

if (conR ='0') and (conR ='1') then

begin

conW: =copy (conR, 1,10);

for i: =30 to 61 do

begin

if word [i] =conW then

begin

BlockWrite (f3, inf [i], 1);

Delete (conR, 1,10);

Break;

end;

end;

end

else

if (conR ='0') and (conR ='1') then

begin

conW: =copy (conR, 1,12);

for i: =62 to 125 do

begin

if word [i] =conW then

begin

BlockWrite (f3, inf [i], 1);

Delete (conR, 1,12);

Break;

end;

end;

end

else

if (conR ='0') and (conR ='1') then

begin

conW: =copy (conR, 1,14);

for i: =126 to 253 do

begin

if word [i] =conW then

begin

BlockWrite (f3, inf [i], 1);

Delete (conR, 1,14);

Break;

end;

end;

end

else

if (conR ='0') and (conR ='1') then

begin

conW: =copy (conR, 1,16);

for i: =254 to 255 do

begin

if word [i] =conW then

begin

BlockWrite (f3, inf [i], 1);

Delete (conR, 1,16);

Break;

end;

end;

end;

if (EOF (f2) = true) and (length (conR) >1) then

// провСряСм остаток

begin

for j: =1 to length (conR) do // считаСм Π΄Π»ΠΈΠ½Ρƒ остатка

begin

if conR='' then break;

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° ΠΎΡΡ‚Π°Ρ‚ΠΎΠΊ производится Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅. Поиск ΠΊΠΎΠ΄ΠΎΠ²Ρ‹Ρ… слов Π² ΠΎΡΡ‚Π°Ρ‚ΠΊΠ΅ производится ΠΏΡƒΡ‚Π΅ΠΌ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… элСмСнтов ΠΊΠΎΠ΄ΠΎΠ²Ρ‹Ρ… слов. Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ ΠΈ Π·Π°ΠΏΠΈΡΡŒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹.

if conR ='1' then

begin

conW: =copy (conR, 1,2);

for i: =0 to 1 do

begin

if word [i] =conW then

begin

BlockWrite (f3, inf [i], 1);

delete (conR, 1,2);

break;

end;

end;

end

else

if (conR ='0') and (conR ='1') then

begin

conW: =copy (conR, 1,4);

for i: =2 to 5 do

begin

if word [i] =conW then

begin

blockWrite (f3, inf [i], 1);

delete (conR, 1,4);

break;

end;

end;

end

else

if (conR ='0') and (conR ='1') then

begin

conW: =copy (conR, 1,6);

for i: =6 to 13 do

begin

if word [i] =conW then

begin

BlockWrite (f3, inf [i], 1);

Delete (conR, 1,6);

break;

end;

end;

end

else

if (conR ='0') and (conR ='1') then

begin

conW: =copy (conR, 1,8);

for i: =14 to 29 do

begin

if word [i] =conW then

begin

BlockWrite (f3, inf [i], 1);

Delete (conR, 1,8);

break;

end;

end;

end

else

if (conR ='0') and (conR ='1') then

begin

conW: =copy (conR, 1,10);

for i: =30 to 61 do

begin

if word [i] =conW then

begin

BlockWrite (f3, inf [i], 1);

Delete (conR, 1,10);

break;

end;

end;

end

else

if (conR ='0') and (conR ='1') then

begin

conW: =copy (conR, 1,12);

for i: =62 to 125 do

begin

if word [i] =conW then

begin

BlockWrite (f3, inf [i], 1);

Delete (conR, 1,12);

break;

end;

end;

end

else

if (conR ='0') and (conR ='1') then

begin

conW: =copy (conR, 1,14);

for i: =126 to 253 do

begin

if word [i] =conW then

begin

BlockWrite (f3, inf [i], 1);

Delete (conR, 1,14);

break;

end;

end;

end

else

if (conR ='0') and (conR ='1') then

begin

conW: =copy (conR, 1,16);

for i: =254 to 255 do

begin

if word [i] =conW then

begin

BlockWrite (f3, inf [i], 1);

Delete (conR, 1,16);

break;

end;

end;

end;

end;

end;

end;

ProgressBar1.Position: =Round ((prog/size) *100);

end;

Label6.Caption: =IntToStr (FileSize (f3)) + ' Π±Π°ΠΉΡ‚';

ShowMessage ('ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π°');

end;

CloseFile (f3);

CloseFile (f2);

end;

procedure TForm1. FormCreate (Sender: TObject);

begin

for i: =0 to 255 do

a [i]: =0;

e [i]: =i;

end;

end.

Рис. 1. Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ тСстирования прилоТСния:

Π Π°Π±ΠΎΡ‚Π° прилоТСния Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Π»Π°ΡΡŒ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠ°Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ². Использовались Ρ„Π°ΠΉΠ»Ρ‹ графичСского, тСкстового, ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΌΠ΅Π΄ΠΈΠΉΠ½ΠΎΠ³ΠΎ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ². ВсС Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ ΠΏΡ€ΠΎΡ†Π΅ΡΡΠ°Ρ… сТатия ΠΈΠ·Π»ΠΎΠΆΠ΅Π½Ρ‹ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅.

Π˜ΠΌΡΡ‚ΠΈΠΏ Ρ„Π°ΠΉΠ»Π°

Π Π°Π·ΠΌΠ΅Ρ€ Π΄ΠΎ ΡΠΆΠ°Ρ‚ия

Имя сТатого Ρ„Π°ΠΉΠ»Π°

Π Π°Π·ΠΌΠ΅Ρ€ послС сТатия

Π‘ΠΆΠ°Ρ‚ΠΈΠ΅

8bit org. bmp

68,7 ΠšΠ‘

8bit org.bmp.gop

18,1 ΠšΠ‘

73%

24bit org. bmp

203 ΠšΠ‘

24bitorg.bmp.gop

54,1 ΠšΠ‘

73%

DOC org. doc

1516 ΠšΠ‘

DOC org.doc.gop

843 ΠšΠ‘

45%

RTF org. rtf

711 ΠšΠ‘

RTF org.rtf.gop

539 ΠšΠ‘

24%

TXT org. txt

1 619 Π±Π°ΠΉΡ‚

TXT org.txt.gop

1 392 Π±Π°ΠΉΡ‚

14%

midi org. mid

40 075 Π±Π°ΠΉΡ‚

midi org.mid.gop

36 551 Π±Π°ΠΉΡ‚

9%

Unit1 org. pas

15 721 Π±Π°ΠΉΡ‚

Unit1 org.pas.gop

9 068 Π±Π°ΠΉΡ‚

42%

ΠœΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ сТатия составляСт 73−75%. Π’ Π΄Π°Π½Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Ρ‹ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹ Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΡΠΆΠ°Ρ‚ΡŒ. Однако Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹ Π² ΡΠ²ΡΠ·ΠΈ со ΡΠ²ΠΎΠ΅ΠΉ спСцификой нСсут Π² ΡΠ΅Π±Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ сТатия Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‡Ρ‚ΠΎ Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Π΄ Π½ΠΈΠΌΠΈ. К Ρ‚Π°ΠΊΠΈΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°ΠΌ относятся: *.tiff, *.gif, *.wav, *.jpeg, *.avi, *.mp3, *.3gp, *.odt.

ΠŸΡ€ΠΎΡ†Π΅Π½Ρ‚ сТатия характСризуСтся Π΄Π»ΠΈΠ½ΠΎΠΉ ΠΊΠΎΠ΄ΠΎΠ²Ρ‹Ρ… слов ΠΈ ΡΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ΠΌ. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚ сТатия Π±ΡƒΠ΄Π΅Ρ‚ 75%, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ минимальная Π΄Π»ΠΈΠ½Π° ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠ³ΠΎ слова Ρ€Π°Π²Π½Π° 2. Π‘ΠΆΠ°Ρ‚ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π° происходит ΠΏΠΎΠ±Π°ΠΉΡ‚ΠΎΠ²ΠΎ, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ замСняСм ΠΊΠΎΠ΄ΠΎΠ²Ρ‹ΠΌ словом ΠΈΠ· 2 Π±ΠΈΡ‚ Π±Π»ΠΎΠΊΠΈ ΠΈΠ· 8 Π±ΠΈΡ‚.

Π›ΡƒΡ‡ΡˆΠ΅ всСго ΠΏΠΎΠ΄Π²Π΅Ρ€Π³Π°ΡŽΡ‚ΡΡ ΡΠΆΠ°Ρ‚ΠΈΡŽ тСкстовыС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹, ΠΌΠ΅Π½Π΅Π΅ сТимаСмы ΠΈ ΠΏΠ»ΠΎΡ…ΠΎ сТимаСмы ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΌΠ΅Π΄ΠΈΡ Ρ„Π°ΠΉΠ»Ρ‹.

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ