Процес квантування сигналів по рівню

Міністерство освіти і науки України

Національний авіаційний університет

Факультет комп’ютерних систем

Контрольна робота

з теорії інформації та кодування

Тема: Процес квантування сигналів по рівню

Виконала: студентка ФКС 306

Гуркіна Юлія

Прийняв: Русаков О.І.

Київ – 2010

Завдання 1

Проаналізувати роботу алгоритму порозрядного зважування та визначити можливі коди, час і похибку перетворення при слідуючих умовах:

    кількість розрядів 5;

    шаг квантування по рівню 0,25В;

    τ=0,1 мкс;

    рівень вхідного сигналу 4В;

Програмне виконання завдання

Програмно дане завдання реалізується за допомогою програми, написаною з допомогою пакту Borland C++ Builder6. Вихідний текст програми знаходиться в Додатку 1.

Розглянемо використання даної програми.

До початку роботи вікно програми має наступний вигляд:

В поле вводу "Кількість розрядів" вводимо кількість розрядів, що задані в умові даного завдання.

Аналогічно, в поля "Крок квантування по рівню", "Рівень вхідного сигналу" і "Час перетворення" також вводимо відповідні дані, задані в умові завдання.

В групі полів під назвою "Похибки", а саме в полях "Максимальна абсолютна", "Максимальна відносна", "Середньоквадратична відносна" і "Середньоквадратична абсолютна" в результаті виконання програмою обчислень записуються результати визначення відповідних похибок.

В полі "Можливі коди" в результаті роботи програми записуються можливі двійкові коди, визначені програмою для конкретних даних введених раніше.

В полі "Час перетворення" записується значення часу перетворення, що визначається програмою на основі введених попередньо даних.

Розглянемо роботу програми, при натисканні відповідних кнопок.

Кнопка "Виконати обчислення":

В результаті натискання даної кнопки виконуються обчислення похибок, генерація можливих кодів і обчислення часу перетворення для введених даних. Результати обчислень, як уже було зазначено вище, виводяться у відповідних полях: "Максимальна абсолютна", "Максимальна відносна", "Середньоквадратична відносна", "Середньоквадратична абсолютна", "Можливі коди" і "Час перетворення".

Кнопка "Побудувати графіки":

При натисканні кнопки "Побудувати графіки" в полі форми виникають графіки епюрів напруг для введених спочатку даних.

Кнопка "Очистити поля форми":

В результаті натискання даної кнопки вікно програми повертається в початковий стан, тобто стираються всі введені дані, всі результати обчислень і побудовані графіки.

Кнопка "Вихід":

При натисканні даної кнопки виконується завершення програми, тобто вікно програми закривається.

Завдання 2

Обгрунтувати структурну схему кодера та проаналізувати його роботу на прикладі генерації циклічного коректуючого коду при наступних умовах:

    створюючий поліном Р(х)=х532+1;

    інформаційна частина 1000001;

Виконання завдання

Програмно дане завдання реалізується за допомогою програми, написаною з допомогою пакту Borland C++ Builder6. Вихідний текст програми знаходиться в Додатку 2.

Розглянемо використання даної програми.

До початку роботи вікно програми має наступний вигляд:

В полі "Створюючий поліном" відмічаються відповідні складові частини створюючого поліному, в яких в даному випадку цифра біля Х означає степінь. Наприклад, запис Х5 означає х5.

Введений таким чином створюючий поліном записується у пам'ять комп’ютера і передається в поле запису "Створюючий поліном"

при натисканні кнопки "Записати", що знаходиться в тому ж полі, для введення створюючого поліному.

Наприклад, при записі поліному наступного вигляду:

у відповідному полі "Створюючий поліном" отримаємо наступний запис:

В полі "Інформаційна частина"

у вікно "Кількість розрядів"

вводимо число розрядів, з якого складається задана інформаційна частина.

У вікнах пронумерованих від "0" до "7" вводиться задана в умові інформаційна частина, де "0"-"7" - номери відповідних розрядів інформаційної частини, починаючи з молодшого.

При натисканні кнопки "Записати"

відбувається запис введеної інформаційної частини у пам'ять комп’ютера і у відповідне поле "Інформаційна частина":

Наприклад, при введенні інформаційної частини вигляду:

після натискання кнопки "Записати" у відповідному полі зявляється наступний запис:

Кнопка "Виконати обчислення":

В результаті натискання цієї кнопки у полях

з'являться проміжні результати обчислень програми, а в полях

з'являться остаточні результати обчислень, що вимагаються в програмі.

Наприклад, при введенні створюючого поліному і інформаційної частини таких, що були наведені в попередніх прикладах, після натискання кнопки "Виконати обчислення" матимемо у відповідних полях такі результати:

    проміжні результати:

    остаточні результати:

Кнопка "Очистити поля форми":

повертає форму у початковий стан, тобто стирає всі записані раніше дані:

Кнопка "Побудувати кодер"

При натисканні даної кнопки програма виконує побудову кодера заданої комбінації циклічного коду.

Наприклад, при введенні циклічного коду, що був наведений у попередніх прикладах, виконується побудова кодеру вигляду:

Кнопка "Вихід": завершує роботу програми.

Додаток 1

#include <vcl.h>

#pragma hdrstop

#include "Unit1.h"

#include <math.h>

#include <conio.h>

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)

{

Edit1->Text=" ";

Edit2->Text=" ";

Edit3->Text=" ";

Edit4->Text=" ";

Edit5->Text=" ";

Edit6->Text=" ";

Edit7->Text=" ";

Edit8->Text=" ";

Label11->Caption=" ";

Label12->Caption=" ";

Label13->Caption=" ";

Series1->Clear();

Series2->Clear();

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button4Click(TObject *Sender)

{

Close();

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)

{

float n=StrToFloat(Edit1->Text);

float de=StrToFloat(Edit2->Text);

float t=StrToFloat(Edit4->Text);

float uvh=StrToFloat(Edit3->Text);

int i;

int l=0, l1=0;

int c=0, c1=0;

int mas1[10];

int mas[10];

float un=0;

float un1=0;

float add=0;

int x1=0;

int x2,x3,x4,x5,x6;

int x21,x31,x41,x51,x61,x11;

do

{

mas[l]=1;

c++;

for (i=c;i<n;i++)

mas[i]=0;

if (l==0)

{

un=de*pow(2,n-c);

x1=un;

}

if (l==1)

{

un=mas[l-1]*de*pow(2,n-c+1)+mas[l]*de*pow(2,n-c);

x2=un;

}

if (l==2)

{

un=mas[l-2]*de*pow(2,n-c+2)+mas[l-1]*de*pow(2,n-c+1)+mas[l]*de*pow(2,n-c);

x3=un;

}

if (l==3)

{

un=mas[l-3]*de*pow(2,n-c+3)+mas[l-2]*de*pow(2,n-c+2)+mas[l-1]*de*pow(2,n-c+1)+

mas[l]*de*pow(2,n-c);

x4=un;

}

if (l==4)

{

un=mas[l-4]*de*pow(2,n-c+4)+mas[l-3]*de*pow(2,n-c+3)+

mas[l-2]*de*pow(2,n-c+2)+mas[l-1]*de*pow(2,n-c+1)+mas[l]*de*pow(2,n-c);

x5=un;

}

if (l==5)

{

un=mas[l-5]*de*pow(2,n-c+5)+mas[l-4]*de*pow(2,n-c+4)+mas[l-3]*de*pow(2,n-c+3)+

mas[l-2]*de*pow(2,n-c+2)+mas[l-1]*de*pow(2,n-c+1)+mas[l]*de*pow(2,n-c);

x6=un;

}

if (uvh>un)

;

if (uvh==un)

mas[l]=1;

if (uvh<un)

mas[l]=0;

Label11->Caption = Label11->Caption + IntToStr(mas[l]) + " " ;

l++;

mas1[l1]=1;

c1++;

for (i=c1;i<n;i++)

mas1[i]=0;

if (l1==0)

{

un1=mas1[l1]*de*pow(2,n-c1);

x11=un1;

}

if (l1==1)

{

un1=mas1[l1-1]*de*pow(2,n-c1+1)+mas1[l1]*de*pow(2,n-c1);

x21=un1;

}

if (l1==2)

{

un1=mas1[l1-2]*de*pow(2,n-c1+2)+mas1[l1-1]*de*pow(2,n-c1+1)+

mas1[l1]*de*pow(2,n-c1);

x31=un1;

}

if (l1==3)

{

un1=mas1[l1-3]*de*pow(2,n-c1+3)+mas1[l1-2]*de*pow(2,n-c1+2)+mas1[l1-1]*de*pow(2,n-c1+1)+

mas1[l1]*de*pow(2,n-c1);

x41=un1;

}

if (l1==4)

{

un1=mas1[l1-4]*de*pow(2,n-c1+4)+mas1[l1-3]*de*pow(2,n-c1+3)+mas1[l1-2]*de*pow(2,n-c1+2)+mas1[l1-1]*de*pow(2,n-c1+1)+

mas1[l1]*de*pow(2,n-c1);

x51=un1;

}

if (l1==5)

{

un1=mas1[l1-5]*de*pow(2,n-c1+5)+mas1[l1-4]*de*pow(2,n-c1+4)+mas1[l1-3]*de*pow(2,n-c1+3)+mas1[l1-2]*de*pow(2,n-c1+2)+mas1[l1-1]*de*pow(2,n-c1+1)+

mas1[l1]*de*pow(2,n-c1);

x61=un1;

}

if (uvh>un1)

mas1[l1]=1;

if (uvh==un1)

mas1[l1]=0;

if (uvh<un1)

mas1[l1]=0;

Label12->Caption = Label12->Caption + IntToStr(mas1[l1]) + " " ;

l1++;

}

while (l!=n);

float map=0;

float mvp=0;

float skap=0;

float skvp=0;

map=de/2;

Edit5->Text=FloatToStrF(map,ffFixed,2,2);

mvp=100/(pow(2,n+1));

Edit6->Text=FloatToStrF(mvp,ffFixed,2,2);

skap=de/(pow(3,0.5)*2);

Edit8->Text=FloatToStrF(skap,ffFixed,2,2);

skvp=100/(pow(3,0.5)*pow(2,n+1));

Edit7->Text=FloatToStrF(skvp,ffFixed,2,2);

float tp=0;

tp=n*t;

Label13->Caption=FloatToStrF(tp,ffFixed,2,2);

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button3Click(TObject *Sender)

{

float n=StrToFloat(Edit1->Text);

float de=StrToFloat(Edit2->Text);

float t=StrToFloat(Edit4->Text);

float uvh=StrToFloat(Edit3->Text);

int i;

int l=0, l1=0;

int c=0, c1=0;

int mas1[10];

int mas[10];

float un=0;

float un1=0;

float add=0;

int x1=0;

int x2,x3,x4,x5,x6;

int x21,x31,x41,x51,x61,x11;

do

{

mas[l]=1;

c++;

for (i=c;i<n;i++)

mas[i]=0;

if (l==0)

{

un=de*pow(2,n-c);

x1=un*10;

}

if (l==1)

{

un=mas[l-1]*de*pow(2,n-c+1)+mas[l]*de*pow(2,n-c);

x2=un*10;

}

if (l==2)

{

un=mas[l-2]*de*pow(2,n-c+2)+mas[l-1]*de*pow(2,n-c+1)+mas[l]*de*pow(2,n-c);

x3=un*10;

}

if (l==3)

{

un=mas[l-3]*de*pow(2,n-c+3)+mas[l-2]*de*pow(2,n-c+2)+mas[l-1]*de*pow(2,n-c+1)+

mas[l]*de*pow(2,n-c);

x4=un*10;

}

if (l==4)

{

un=mas[l-4]*de*pow(2,n-c+4)+mas[l-3]*de*pow(2,n-c+3)+

mas[l-2]*de*pow(2,n-c+2)+mas[l-1]*de*pow(2,n-c+1)+mas[l]*de*pow(2,n-c);

x5=un*10;

}

if (l==5)

{

un=mas[l-5]*de*pow(2,n-c+5)+mas[l-4]*de*pow(2,n-c+4)+mas[l-3]*de*pow(2,n-c+3)+

mas[l-2]*de*pow(2,n-c+2)+mas[l-1]*de*pow(2,n-c+1)+mas[l]*de*pow(2,n-c);

x6=un*10;

}

if (uvh>un)

;

if (uvh==un)

mas[l]=1;

if (uvh<un)

mas[l]=0;

l++;

mas1[l1]=1;

c1++;

for (i=c1;i<n;i++)

mas1[i]=0;

if (l1==0)

{

un1=mas1[l1]*de*pow(2,n-c1);

x11=un1*10;

}

if (l1==1)

{

un1=mas1[l1-1]*de*pow(2,n-c1+1)+mas1[l1]*de*pow(2,n-c1);

x21=un1*10;

}

if (l1==2)

{

un1=mas1[l1-2]*de*pow(2,n-c1+2)+mas1[l1-1]*de*pow(2,n-c1+1)+

mas1[l1]*de*pow(2,n-c1);

x31=un1*10;

}

if (l1==3)

{

un1=mas1[l1-3]*de*pow(2,n-c1+3)+mas1[l1-2]*de*pow(2,n-c1+2)+mas1[l1-1]*de*pow(2,n-c1+1)+

mas1[l1]*de*pow(2,n-c1);

x41=un1*10;

}

if (l1==4)

{

un1=mas1[l1-4]*de*pow(2,n-c1+4)+mas1[l1-3]*de*pow(2,n-c1+3)+mas1[l1-2]*de*pow(2,n-c1+2)+mas1[l1-1]*de*pow(2,n-c1+1)+

mas1[l1]*de*pow(2,n-c1);

x51=un1*10;

}

if (l1==5)

{

un1=mas1[l1-5]*de*pow(2,n-c1+5)+mas1[l1-4]*de*pow(2,n-c1+4)+mas1[l1-3]*de*pow(2,n-c1+3)+mas1[l1-2]*de*pow(2,n-c1+2)+mas1[l1-1]*de*pow(2,n-c1+1)+

mas1[l1]*de*pow(2,n-c1);

x61=un1*10;

}

if (uvh>un1)

mas1[l1]=1;

if (uvh==un1)

mas1[l1]=0;

if (uvh<un1)

mas1[l1]=0;

l1++;

}

while (l!=n);

float map=0;

float mvp=0;

float skap=0;

float skvp=0;

map=de/2;

Edit5->Text=FloatToStrF(map,ffFixed,2,2);

mvp=100/(pow(2,n+1));

Edit6->Text=FloatToStrF(mvp,ffFixed,2,2);

skap=de/(pow(3,0.5)*2);

Edit8->Text=FloatToStrF(skap,ffFixed,2,2);

skvp=100/(pow(3,0.5)*pow(2,n+1));

Edit7->Text=FloatToStrF(skvp,ffFixed,2,2);

Chart1->Visible=true;

Chart2->Visible=true;

if (n==1)

{

Series1->Add(x1,0,clRed);

Series1->Add(x1,1,clRed);

}

if (n==2)

{

Series1->Add(x1,0,clRed);

Series1->Add(x2,1,clRed);

Series1->Add(x2,2,clRed);

}

if (n==3)

{

Series1->Add(x1,0,clRed);

Series1->Add(x2,1,clRed);

Series1->Add(x3,2,clRed);

Series1->Add(x3,3,clRed);

}

if (n==4)

{

Series1->Add(x1,0,clRed);

Series1->Add(x2,1,clRed);

Series1->Add(x3,2,clRed);

Series1->Add(x4,3,clRed);

Series1->Add(x4,4,clRed);

}

if (n==5)

{

Series1->Add(x1,0,clRed);

Series1->Add(x2,1,clRed);

Series1->Add(x3,2,clRed);

Series1->Add(x4,3,clRed);

Series1->Add(x5,4,clRed);

Series1->Add(x5,5,clRed);

}

if (n==6)

{

Series1->Add(x1,0,clRed);

Series1->Add(x2,1,clRed);

Series1->Add(x3,2,clRed);

Series1->Add(x4,3,clRed);

Series1->Add(x5,4,clRed);

Series1->Add(x6,5,clRed);

Series1->Add(x6,6,clRed);

}

if (n==1)

{

Series2->Add(x11,0,clRed);

Series2->Add(x11,1,clRed);

}

if (n==2)

{

Series2->Add(x11,0,clRed);

Series2->Add(x21,1,clRed);

Series2->Add(x21,2,clRed);

}

if (n==3)

{

Series2->Add(x11,0,clRed);

Series2->Add(x21,1,clRed);

Series2->Add(x31,2,clRed);

Series2->Add(x31,3,clRed);

}

if (n==4)

{

Series2->Add(x11,0,clRed);

Series2->Add(x21,1,clRed);

Series2->Add(x31,2,clRed);

Series2->Add(x41,3,clRed);

Series2->Add(x41,4,clRed);

}

if (n==5)

{

Series2->Add(x11,0,clRed);

Series2->Add(x21,1,clRed);

Series2->Add(x31,2,clRed);

Series2->Add(x41,3,clRed);

Series2->Add(x51,4,clRed);

Series2->Add(x51,5,clRed);

}

if(n==6)

{

Series2->Add(x11,0,clRed);

Series2->Add(x21,1,clRed);

Series2->Add(x31,2,clRed);

Series2->Add(x41,3,clRed);

Series2->Add(x51,4,clRed);

Series2->Add(x61,5,clRed);

Series2->Add(x61,6,clRed);

}

}

//---------------------------------------------------------------------------

Додаток 2

#include <vcl.h>

#pragma hdrstop

#include "Unit1.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

int mas1[10];

int mas[10];

int mask[10];

float n1;

int masa[20];

int masb[20];

int masc[20];

int masd[20];

int mase[20];

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)

{

int i;

if (CheckBox1->Checked)

{

Label10->Caption=Label10->Caption+"x7+";

mas1[0]=7;

}

if (CheckBox2->Checked)

{

Label10->Caption=Label10->Caption+"x6+";

mas1[1]=6;

}

if (CheckBox3->Checked)

{

Label10->Caption=Label10->Caption+"x5+";

mas1[2]=5;

}

if (CheckBox4->Checked)

{

Label10->Caption=Label10->Caption+"x4+";

mas1[3]=4;

}

if (CheckBox5->Checked)

{

Label10->Caption=Label10->Caption+"x3+";

mas1[4]=3;

}

if (CheckBox6->Checked)

{

Label10->Caption=Label10->Caption+"x2+";

mas1[5]=2;

}

if (CheckBox7->Checked)

{

Label10->Caption=Label10->Caption+"x+";

mas1[6]=1;

}

if (CheckBox8->Checked)

{

Label10->Caption=Label10->Caption+"1";

mas1[7]=0;

}

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)

{

int i;

n1=StrToFloat(Edit1->Text);

mas[0]=StrToFloat(Edit2->Text);

mas[1]=StrToFloat(Edit3->Text);

mas[2]=StrToFloat(Edit4->Text);

mas[3]=StrToFloat(Edit5->Text);

mas[4]=StrToFloat(Edit6->Text);

mas[5]=StrToFloat(Edit7->Text);

mas[6]=StrToFloat(Edit8->Text);

mas[7]=StrToFloat(Edit9->Text);

for (i=0;i<=n1-1;i++)

Label11->Caption = Label11->Caption + mas[i] ;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button4Click(TObject *Sender)

{

Edit1->Text="";

Edit2->Text="";

Edit3->Text="";

Edit4->Text="";

Edit5->Text="";

Edit6->Text="";

Edit7->Text="";

Edit8->Text="";

Edit9->Text="";

Label10->Caption="";

Label11->Caption="";

CheckBox1->Checked=False;

CheckBox2->Checked=False;

CheckBox3->Checked=False;

CheckBox4->Checked=False;

CheckBox5->Checked=False;

CheckBox6->Checked=False;

CheckBox7->Checked=False;

CheckBox8->Checked=False;

Label12->Caption="";

Label13->Caption="";

Label14->Caption="";

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button3Click(TObject *Sender)

{

int h=0;

int r=0;

int j,i,k,l,m;

for (i=n1-1;i>0;i--)

{

if (mas[i]==1)

mas[i]=i;

else

mas[i]=0;

if (mas[0]==1)

mas[0]=1;

}

for (i=n1-1;i>0;i--)

{

if (mas[i]!=0)

{

Label12->Caption = Label12->Caption +"x"+ mas[i]+"+" ;

h++;

}

}

if (mas[0]!=0)

{

Label12->Caption = Label12->Caption + mas[0] ;

h++;

}

int max=0;

for (j=7;j>=0;j--)

{

if (mas1[j]>max)

{

max=mas1[j];

r=max;

}

}

Label13->Caption = Label13->Caption + r ;

for (i=n1-1;i>0;i--)

{

if (mas[i]!=0)

{

mas[i]+=r;

Label14->Caption = Label14->Caption +"x"+ mas[i]+"+" ;

}

}

if (mas[0]!=0)

mas[0]=r;

Label14->Caption = Label14->Caption +"x"+ (mas[0]) ;

i=0;j=0;

for (m=0;m<n1-2+r;m++)

{

for (k=r;k>=0;k--)

{

masa[i]=mas1[i];

masb[j]=mas[j];

masc[k]=masb[j]-masa[i];

for (l=0;l<n1-1+r;l++)

{

masd[l]=masa[i]+masc[k];

i++;

if (masd[l]!=masb[j]) {

mase[m]=masd[l];

masd[l]=mase[m];

}

j++;

}

}

}

for (l=0;l<n1-1+r;l++)

{

Label17->Caption=Label17->Caption + masd[l];

}

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button6Click(TObject *Sender)

{

Close();

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button5Click(TObject *Sender)

{

if (CheckBox1->Checked)

{

mask[7]=7;

}

if (CheckBox2->Checked)

{

mask[6]=6;

}

if (CheckBox3->Checked)

{

mask[5]=5;

}

if (CheckBox4->Checked)

{

mask[4]=4;

}

if (CheckBox5->Checked)

{

mask[3]=3;

}

if (CheckBox6->Checked)

{

mask[2]=2;

}

if (CheckBox7->Checked)

{

mask[1]=1;

}

if (CheckBox8->Checked)

{

mask[8]=0;

}

int mak[8];

int i;

for (i=1;i<8;i++)

{

if (mask[i]>0)

;

else

mask[i]=99;

}

if(CheckBox8->Checked)

mask[0]=0;

else

mask[0]=99;

for (i=0;i<8;i++)

{

if (mask[i]==99)

mak[i]=0;

else

mak[i]=1;

}

int max=0;

for (i=0;i<8;i++)

if ((mask[i]>max)&&(mask[i]!=99))

max=mask[i];

if((mask[7]!=99)&&(max>7))

{

Image15->Visible=true;

Image14->Visible=true;

}

if((mask[7]==99)&&(max>7))

Image15->Visible=true;

if((mask[6]!=99)&&(max>6))

{

Image2->Visible=true;

Image3->Visible=true;

}

if((mask[6]==99)&&(max>6))

Image2->Visible=true;

if((mask[5]!=99)&&(max>5))

{

Image4->Visible=true;

Image5->Visible=true;

}

if((mask[5]==99)&&(max>5))

Image4->Visible=true;

if((mask[4]!=99)&&(max>4))

{

Image6->Visible=true;

Image7->Visible=true;

}

if((mask[4]==99)&&(max>4))

Image6->Visible=true;

if((mask[3]!=99)&&(max>3))

{

Image8->Visible=true;

Image9->Visible=true;

}

if((mask[3]==99)&&(max>3))

Image8->Visible=true;

if((mask[2]!=99)&&(max>2))

{

Image10->Visible=true;

Image11->Visible=true;

}

if((mask[2]==99)&&(max>2))

Image10->Visible=true;

if((mask[1]!=99)&&(max>1))

{

Image12->Visible=true;

Image13->Visible=true;

}

if((mask[1]==99)&&(max>1))

Image12->Visible=true;

Image1->Visible=true;

}

//---------------------------------------------------------------------------