Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Laboratornaya_rabota_1_KMZI.docx
Скачиваний:
2
Добавлен:
05.09.2019
Размер:
44.22 Кб
Скачать

Void displaybits(int k)

{

int i;

int mask=1<<31 ;

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

{

putchar(k & mask ? '1' : '0');

k<<=1;

if(i%8 == 0)

putchar(' ');

}

}

LRESULT CALLBACK ARH_SHENON_FANO(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)

{

FILE *file_out;

file_out = fopen("D:\\1.txt","r");

char c;

int i;

fscanf(file_out,"%c",&c);

vector <Simbol> sim(1);

sim[0].c = c;

sim[0].kol = 1;

int n = 1;

bool k=1;

while( !feof(file_out) )

{

k=1;

fscanf(file_out,"%c",&c);

for(int i=0; i<n; i++)

{

if(sim[i].c == c)

{

sim[i].kol++;

k=0;

break;

}

}

if(1==k)

{

Simbol buf;

buf.c = c;

buf.kol=1;

sim.push_back(buf);

n++;

}

}

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

{

if(sim[i].c == c)

{

sim[i].kol--;

break;

}

}

vector <Simbol> sim_buf;

for(i=0; i<sim.size(); i++)

{

sim_buf.push_back(sim[i]);

}

fun(sim,sim_buf);

FILE *file_table;

file_table= fopen("D:\\1_table.txt","w+");

for( i = 0; i < sim.size(); i++)

{

fprintf(file_table,"\n%c\t",sim[i].c);

for( int j=0; j<sim[i].code.size(); j++ )

{

fprintf(file_table,"%d", sim[i].code[j]);

}

}

FILE *file_com;

file_com = fopen("D:\\1_com.txt","w+");

n=1;

vector<char> vec;

vec.push_back(NULL);

rewind(file_out);

fscanf(file_out,"%c",&c);

while( !feof(file_out) )

{

for( i = 0; i < sim.size(); i++)

{

if(sim[i].c == c)

break;

}

for(int j = 0; j < sim[i].code.size(); j++)

{

if(n%8==0)

{

vec.push_back(NULL);

vec[fabs(n/8-1)] |= sim[i].code[j];

}

else

{

vec[fabs(n/8)] |= sim[i].code[j]<< (8 - n%8);

}

n++;

}

fscanf(file_out,"%c",&c);

}

for( i = 0; i < vec.size(); i++ )

fprintf(file_com,"%c",vec[i]);

fclose(file_com);

fclose(file_out);

fclose(file_table);

switch (message)

{

case WM_COMMAND:

switch (wParam)

{

case IDOK:

EndDialog(hDlg,TRUE);

break;

default:

return FALSE;

}

break;

default:

return FALSE;

}

return FALSE;

}

LRESULT CALLBACK DEARH_SHENON_FANO(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)

{

FILE *file_out;

file_out = fopen("D:\\1.txt","r");

char c;

int i;

fscanf(file_out,"%c",&c);

vector <Simbol> sim(1);

sim[0].c = c;

sim[0].kol = 1;

int n = 0;

bool k=1;

while( !feof(file_out) )

{

k=1;

fscanf(file_out,"%c",&c);

for(int i=0; i<n; i++)

{

if(sim[i].c == c)

{

sim[i].kol++;

k=0;

break;

}

}

if(1==k)

{

Simbol buf;

buf.c = c;

buf.kol=1;

sim.push_back(buf);

n++;

}

}

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

{

if(sim[i].c == c)

{

sim[i].kol--;

break;

}

}

vector <Simbol> sim_buf;

for(i=0; i<sim.size(); i++)

sim_buf.push_back(sim[i]);

fun(sim,sim_buf);

FILE *file_com;

file_com = fopen("D:\\1_com.txt","r");

vector<char> vec;

FILE *file_decom;

file_decom = fopen("D:\\1_decom.txt","w+");

fscanf(file_com,"%c",&c);

while( !feof(file_com) )

{

vec.push_back(c);

fscanf(file_com,"%c",&c);

}

vector<int> vec_decom;

for( i=0; i < vec.size(); i++ )

{

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

{

vec_decom.push_back(NULL);

vec_decom[n] = abs( ( vec[i]>>j ) % 2 );

n++;

for( int g = 0; g < sim.size(); g++ )

{

if(vec_decom == sim[g].code)

{

fprintf(file_decom,"%c", sim[g].c);

vec_decom.clear();

n=0;

break;

}

}

}

}

fclose(file_out);

fclose(file_com);

fclose(file_decom);

switch (message)

{

case WM_COMMAND:

switch (wParam)

{

case IDOK:

EndDialog(hDlg,TRUE);

break;

default:

return FALSE;

}

break;

default:

return FALSE;

}

return FALSE;

}

Вывод: изучили алгоритм шифрования, дешифрования и сжатия.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]