for i=1 to n 'заносим информационные биты в кодированный массив
a=m 'счетчик информационных разрядов
for j=1 to nkod
kontrol=0 'метка отсутствия контрольного разряда
for b=0 To k-1 'кроме контрольных разрядов
kreal=2^b
if j=kreal then
kontrol=1 'метка наличия контрольного разряда
kodmassiv(i,j)=0 'обнуляем контрольные разряды
End if
Next
if kontrol=0 then 'запись в кодированный массив информационного кода
kodmassiv(i,j)=binarykod(i,a)
a=a-1
End if
Next
Next
for i=1 to n 'запись в кодированный массив контрольного кода
for j=1 to nkod
poz=0
for b=0 To k-1 'просмотр контрольных бит
kreal=2^b
if j=kreal then
nomer=kreal
Do 'номер позиции первой младшей единицы двоичного кода символа
ostatok=kreal mod 2
kreal=kreal\2
poz=poz+1
loop until ostatok=1
End if
Next
if poz>0 then
for h=nomer+1 To nkod 'суммируем значения битов с одинаковыми номерами poz
data1=h
sch=0
do
ostatok=data1 mod 2
data1=data1\2
sch=sch+1
loop Until sch=poz
if ostatok=1 then
kodmassiv(i,j)=kodmassiv(i,j) XOR kodmassiv(i,h) ' расчет контрольного кода
End if
Next
End if
Next
Next
End sub
Sub Button2_OnClick() 'чтение парольной фразы полученной из канала связи
|
|
ReDim symbol(n) 'определяем кодированный массив
for i=1 to n ' последовательное чтение символов контрольной фразы
a=m 'счетчик информационных разрядов
symbol(i)=0
for j=1 to nkod 'читаем информационные биты
kontrol=0 'метка отсутствия контрольного разряда
for b=0 To k-1 'кроме контрольных разрядов
kreal=2^b
if j=kreal then
kontrol=1 'метка наличия контрольного разряда
End if
Next
if kontrol=0 then 'расчет десятичного кода символа
symbol(i)=symbol(i)+kodmassiv(i,j)*2^(a-1)
a=a-1
End if
Next
Next
document.all.Edit6.value="" 'вывод информации о парольной фразе в браузер
for i=1 to n
document.all.Edit6.value=document.all.Edit6.value+Chr(symbol(i))
Next
End sub
sub Button3_OnClick() ' кнопка управления "передать по каналу связи с единичными ошибками""
'вводим ошибки передачи данных
for i=1 to n ' обнуляем контрольные элементы в массиве
kodmassiv(i,0)=0
Next
Randomize 'функция случайных чисел
kolosh = Int(n*Rnd) + 1 'случайное число ошибок kolosh не больше n
document.all.Edit3.value="" 'число ошибок в канале связи
document.all.Edit3.value=CStr(kolosh)
k1=0
do while k1<kolosh
i = Int(n*Rnd + 1) ' случайный выбор символа для добавления ошибки
if kodmassiv(i,0)=0 then
j = Int(nkod*Rnd + 1) ' добавляем ошибки в случайные разряды
Select Case kodmassiv(i,j)
Case 0
kodmassiv(i,j)=1
Case 1
kodmassiv(i,j)=0
End Select
k1=k1+1 'количество занесенных ошибок
kodmassiv(i,0)=1
End if
Loop
'чтение парольной фразы
ReDim symbol(n) 'определяем кодированный массив
for i=1 to n ' последовательное чтение символов контрольной фразы
a=m 'счетчик информационных разрядов
symbol(i)=0
for j=1 to nkod 'читаем информационные биты
kontrol=0 'метка отсутствия контрольного разряда
for b=0 To k-1 'кроме контрольных разрядов
kreal=2^b
if j=kreal then
kontrol=1 'метка наличия контрольного разряда
|
|
End if
Next
if kontrol=0 then 'расчет десятичного кода символа
symbol(i)=symbol(i)+kodmassiv(i,j)*2^(a-1)
a=a-1
End if
Next
Next
document.all.Edit8.value=""
for i=1 to n 'читаем массив строк с одиночными символами
document.all.Edit8.value=document.all.Edit8.value+Chr(symbol(i))
Next
'окончание чтения полученной фразы
End sub
Sub ListBox_onchange() 'выбор из выпадающего списка
Dim intMnt
intMnt=CInt(document.all.ListBox.value)
Select Case intMnt
Case 0
document.all.Edit1.value=""
Case 1
document.all.Edit1.value="Прошлого не вытравить,не выкрасть."
Case 2
document.all.Edit1.value="Растерять легко по пустякам."
Case 3
document.all.Edit1.value="Быть самым-самым первым."
Case 4
document.all.Edit1.value="За призванье надо биться."
Case 5
document.all.Edit1.value="Произносить чужие мысли вслух."
Case 6
document.all.Edit1.value="Друзей без вниманья оставить нельзя."
Case 7
document.all.Edit1.value="Мой дом-моя крепость!"
End Select
End sub