Процес квантування сигналів по рівню
В полі «Створюючий поліном» відмічаються відповідні складові частини створюючого поліному, в яких в даному випадку цифра біля Х означає степінь. Наприклад, запис Х5 означає х5. У вікнах пронумерованих від «0» до «7» вводиться задана в умові інформаційна частина, де «0″ -» 7″ — номери відповідних розрядів інформаційної частини, починаючи з молодшого. В результаті натискання даної кнопки вікно… Читати ще >
Процес квантування сигналів по рівню (реферат, курсова, диплом, контрольна)
Міністерство освіти і науки України Національний авіаційний університет Факультет комп’ютерних систем Контрольна робота з теорії інформації та кодування Тема: Процес квантування сигналів по рівню Виконала: студентка ФКС 306
Гуркіна Юлія Прийняв: Русаков О.І.
Київ — 2010
Завдання 1
Проаналізувати роботу алгоритму порозрядного зважування та визначити можливі коди, час і похибку перетворення при слідуючих умовах:
— кількість розрядів 5;
— шаг квантування по рівню 0,25В;
— ф=0,1 мкс;
— рівень вхідного сигналу 4В;
Програмне виконання завдання
Програмно дане завдання реалізується за допомогою програми, написаною з допомогою пакту Borland C++ Builder6. Вихідний текст програми знаходиться в Додатку 1.
Розглянемо використання даної програми.
До початку роботи вікно програми має наступний вигляд:
В поле вводу «Кількість розрядів» вводимо кількість розрядів, що задані в умові даного завдання.
Аналогічно, в поля «Крок квантування по рівню», «Рівень вхідного сигналу» і «Час перетворення» також вводимо відповідні дані, задані в умові завдання.
В групі полів під назвою «Похибки», а саме в полях «Максимальна абсолютна», «Максимальна відносна», «Середньоквадратична відносна» і «Середньоквадратична абсолютна» в результаті виконання програмою обчислень записуються результати визначення відповідних похибок.
В полі «Можливі коди» в результаті роботи програми записуються можливі двійкові коди, визначені програмою для конкретних даних введених раніше.
В полі «Час перетворення» записується значення часу перетворення, що визначається програмою на основі введених попередньо даних.
Розглянемо роботу програми, при натисканні відповідних кнопок.
Кнопка «Виконати обчислення» :
В результаті натискання даної кнопки виконуються обчислення похибок, генерація можливих кодів і обчислення часу перетворення для введених даних. Результати обчислень, як уже було зазначено вище, виводяться у відповідних полях: «Максимальна абсолютна», «Максимальна відносна», «Середньоквадратична відносна», «Середньоквадратична абсолютна», «Можливі коди» і «Час перетворення» .
Кнопка «Побудувати графіки» :
При натисканні кнопки «Побудувати графіки» в полі форми виникають графіки епюрів напруг для введених спочатку даних.
Кнопка «Очистити поля форми» :
В результаті натискання даної кнопки вікно програми повертається в початковий стан, тобто стираються всі введені дані, всі результати обчислень і побудовані графіки.
Кнопка «Вихід» :
При натисканні даної кнопки виконується завершення програми, тобто вікно програми закривається.
Завдання 2
Обгрунтувати структурну схему кодера та проаналізувати його роботу на прикладі генерації циклічного коректуючого коду при наступних умовах:
— створюючий поліном Р (х)=х5+х3+х2+1;
— інформаційна частина 1 000 001;
Виконання завдання
Програмно дане завдання реалізується за допомогою програми, написаною з допомогою пакту Borland C++ Builder6. Вихідний текст програми знаходиться в Додатку 2.
Розглянемо використання даної програми.
До початку роботи вікно програми має наступний вигляд:
В полі «Створюючий поліном» відмічаються відповідні складові частини створюючого поліному, в яких в даному випадку цифра біля Х означає степінь. Наприклад, запис Х5 означає х5.
Введений таким чином створюючий поліном записується у пам’ять комп’ютера і передається в поле запису «Створюючий поліном»
при натисканні кнопки «Записати», що знаходиться в тому ж полі, для введення створюючого поліному.
Наприклад, при записі поліному наступного вигляду:
у відповідному полі «Створюючий поліном» отримаємо наступний запис:
В полі «Інформаційна частина»
у вікно «Кількість розрядів»
вводимо число розрядів, з якого складається задана інформаційна частина.
У вікнах пронумерованих від «0» до «7» вводиться задана в умові інформаційна частина, де «0″ -» 7″ - номери відповідних розрядів інформаційної частини, починаючи з молодшого.
При натисканні кнопки «Записати»
відбувається запис введеної інформаційної частини у пам’ять комп’ютера і у відповідне поле «Інформаційна частина» :
Наприклад, при введенні інформаційної частини вигляду:
після натискання кнопки «Записати» у відповідному полі зявляється наступний запис:
Кнопка «Виконати обчислення» :
В результаті натискання цієї кнопки у полях
з’являться проміжні результати обчислень програми, а в полях з’являться остаточні результати обчислень, що вимагаються в програмі.
Наприклад, при введенні створюючого поліному і інформаційної частини таких, що були наведені в попередніх прикладах, після натискання кнопки «Виконати обчислення» матимемо у відповідних полях такі результати:
— проміжні результати:
— остаточні результати:
Кнопка «Очистити поля форми» :
повертає форму у початковий стан, тобто стирає всі записані раніше дані:
Кнопка «Побудувати кодер»
При натисканні даної кнопки програма виконує побудову кодера заданої комбінації циклічного коду.
Наприклад, при введенні циклічного коду, що був наведений у попередніх прикладах, виконується побудова кодеру вигляду:
Кнопка «Вихід»: завершує роботу програми.
Додаток 1
#include
#pragma hdrstop
#include «Unit1.h»
#include
#include
//—————————————————————————————————————;
#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
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
mas[l]=0;
Label11->Caption = Label11->Caption + IntToStr (mas[l]) + «» ;
l++;
mas1[l1]=1;
c1++;
for (i=c1;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
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
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
mas[l]=0;
l++;
mas1[l1]=1;
c1++;
for (i=c1;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
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
#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
{
for (k=r;k>=0;k—)
{
masa[i]=mas1[i];
masb[j]=mas[j];
masc[k]=masb[j]-masa[i];
for (l=0;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
{
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;
}
//—————————————————————————————————————;