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

1.Задание

Вариант №59

B1

B2

R

P

59

2

2

2

2

Согласно варианту работы, требования к работе являются такими:

  • В1=2 – текст ключа вводится пользователем как параметр командной строки при запуске программы.

  • В2=2 – текст ключа вводится пользователем программы дешифрования как параметр командной строки при запуске программы.

  • R=2 – все символы ключа преобразуются в заглавные, а символы исходного текста в прописные.

  • При обратной подстановке (P=2) символы ключа располагаются в обратном порядке

2.Таблица символьных имен

Математическое

имя

Имя в программе

Смысловое значение

Переменная

Тип

Значение

in

in

Указатель на входной файл

FILE

Указатель

out

out

Указатель на выходной файл

FILE

Указатель

n

n

Длина ключа

Целый

Перем.

j

j

Номер символа в ключе

Целый

Перем.

i

i

Счетчик(начало, конец файла)

Целый

Перем.

temp

temp

Символ исходного файла, зашифрованый символ

Символьн.

Входное

key[1]

key[1]

Ключ

Символьн.

Входное

3.Блок-схема программы шифрования

4.Блок-схема программы дешифрования

5.Текст программы шифрования

#include<iostream>

#include <tchar.h>

#include <conio.h>

#include <stdio.h>

#include <math.h>

#include <string.h>

using namespace std;

void main(intargc, char **key){

FILE *in = fopen("in.txt", "rb");

FILE *out = fopen("out.txt", "wb");

if(!in){

cout<<"\nThere is no file for coding \"in.txt\".";

cout<<"\n\nPres any key for exit...";

system("pause");

exit(1);

}

int i,j,n = strlen(key[1]);

char temp;

for (i = 0; key[1][i]; i++){

if(key[1][i] >= -32 && key[1][i] <= -1) key[1][i] -= 32;

if(key[1][i] == -65 || key[1][i] == -72 || key[1][i] == -70) key[1][i] -= 16;

if(key[1][i] >=97 && key[1][i] <= 122) key[1][i] -= 32;

}

strrev(key[1]);

for(i = 0; ((temp = fgetc(in)) && !feof(in)); i++){

if(temp <= -33 && temp >= -64) temp += 32;

if(temp == -81 || temp == -88 || temp == -86) temp += 16;

if(temp <= 90 && temp >= 65) temp += 32;

j = fmod((float)i,(float)n);

temp = key[1][j]^temp;

fputc(temp,out);

}

fclose(in);

fclose(out);

cout<<"The text was coded and put to \"out.txt\""<<endl;

system("pause");

}

6.Текст программы дешифрования

#include <iostream>

#include <tchar.h>

#include <conio.h>

#include <stdio.h>

#include <math.h>

#include <string.h>

using namespace std;

void main(intargc, char **key){

FILE *in = fopen("out.txt", "rb");

FILE *out = fopen("out_decoded.txt", "wb");

if(!in){

cout<<"\nThere is no file for coding \"in.txt\".";

cout<<"\n\nPres any key for exit...";

system("pause");

exit(1);

}

int i,j,n = strlen(key[1]);

char temp;

for (i = 0; key[1][i]; i++){

if(key[1][i] >= -32 && key[1][i] <= -1) key[1][i] -= 32;

if(key[1][i] == -65 || key[1][i] == -72 || key[1][i] == -70);

if(key[1][i] >=97 && key[1][i] <= 122) key[1][i] -= 32;

}

strrev(key[1]);

for(i = 0; ((temp = fgetc(in)) && !feof(in)); i++){

j = fmod((float)i,(float)n);

temp = key[1][j]^temp;

fputc(temp,out);

}

fclose(in);

fclose(out);

cout<<"The text was decoded and put to \"out_2.txt\""<<endl;

system("pause");

}