Процес квантування сигналів по рівню
Міністерство
освіти і науки України
Національний
авіаційний університет
Факультет
комп’ютерних систем
Контрольна
робота
з
теорії інформації та кодування
Тема:
Процес квантування сигналів по рівню
Виконала:
студентка ФКС 306
Гуркіна
Юлія
Прийняв:
Русаков О.І.
Київ
– 2010
Завдання
1
Проаналізувати
роботу алгоритму порозрядного зважування та визначити можливі коди, час і похибку
перетворення при слідуючих умовах:
-
кількість розрядів 5;
-
шаг квантування по рівню 0,25В;
-
τ=0,1 мкс;
-
рівень вхідного сигналу 4В;
Програмне
виконання завдання
Програмно дане
завдання реалізується за допомогою програми, написаною з допомогою пакту Borland
C++ Builder6.
Вихідний текст програми знаходиться в Додатку 1.
Розглянемо
використання даної програми.
До початку
роботи вікно програми має наступний вигляд:
В поле вводу "Кількість
розрядів" вводимо кількість розрядів, що задані в умові даного завдання.
Аналогічно, в
поля "Крок квантування по рівню", "Рівень вхідного сигналу"
і "Час перетворення" також вводимо відповідні дані, задані в умові
завдання.
В групі полів
під назвою "Похибки", а саме в полях "Максимальна абсолютна",
"Максимальна відносна", "Середньоквадратична відносна" і "Середньоквадратична
абсолютна" в результаті виконання програмою обчислень записуються
результати визначення відповідних похибок.
В полі "Можливі
коди" в результаті роботи програми записуються можливі двійкові коди,
визначені програмою для конкретних даних введених раніше.
В полі "Час
перетворення" записується значення часу перетворення, що визначається
програмою на основі введених попередньо даних.
Розглянемо
роботу програми, при натисканні відповідних кнопок.
Кнопка "Виконати
обчислення":
В результаті
натискання даної кнопки виконуються обчислення похибок, генерація можливих
кодів і обчислення часу перетворення для введених даних. Результати обчислень,
як уже було зазначено вище, виводяться у відповідних полях: "Максимальна
абсолютна", "Максимальна відносна", "Середньоквадратична
відносна", "Середньоквадратична абсолютна", "Можливі коди"
і "Час перетворення".
Кнопка "Побудувати
графіки":
При натисканні
кнопки "Побудувати графіки" в полі форми виникають графіки епюрів
напруг для введених спочатку даних.
Кнопка "Очистити
поля форми":
В результаті
натискання даної кнопки вікно програми повертається в початковий стан, тобто
стираються всі введені дані, всі результати обчислень і побудовані графіки.
Кнопка "Вихід":
При натисканні
даної кнопки виконується завершення програми, тобто вікно програми
закривається.
Завдання
2
Обгрунтувати структурну
схему кодера та проаналізувати його роботу на прикладі генерації циклічного коректуючого
коду при наступних умовах:
-
створюючий поліном Р(х)=х5+х3+х2+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;
}
{
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;
}
//---------------------------------------------------------------------------