Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабораторная работа №5 Вариант 21

.doc
Скачиваний:
7
Добавлен:
20.06.2014
Размер:
320.51 Кб
Скачать

2

ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ

ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ

ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ

ЛИПЕЦКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

КАФЕДРА АВТОМАТИЗИРОВАННЫХ СИСТЕМ УПРАВЛЕНИЯ

Лабораторная работа №5

по дисциплине

«Технология программирования»

на тему:

«Программирование алгоритмов кодирования информации»

Студент

подпись, дата

фамилия, инициалы

Группа

Принял

Домашнев П.А.

ученая степень, звание

подпись, дата

фамилия, инициалы

Липецк 2010

  1. Задание

Написать программу, осуществляющую кодирование и раскодирование последовательности из входного файла заданным методом и сохраняющую результат в выходной файл. Имена файлов вводит пользователь. Режим работы с файлам – двоичный. Для алгоритмов шифрования/дешифрования пользователь должен вводить также ключ.

Вариант 21

Алгоритм шифрования

1 – метод простой подстановки

  1. Листинг программы

#include <stdlib.h>

#include <conio.h>

#include <stdio.h>

#include <locale.h>

#include <string.h>

char alf[]="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";

char *kode(char *S,char *kod)

{

for(int i=0;i<strlen(S);i++)

{

for(int j=0;j<52;j++)

if(S[i]==alf[j])

{

S[i]=kod[j];

break;

}

}

return S;

}

char *rekode(char *S,char *kod)

{

for(int i=0;i<strlen(S);i++)

{

for(int j=0;j<52;j++)

if(S[i]==kod[j])

{

S[i]=alf[j];

break;

}

}

return S;

}

void main()

{

setlocale(LC_ALL,"Rus");

char *S,p,kod[53],word1[52];

int i,k=0;

remove("I:/1bin.txt");

FILE *fp;

S=(char*)malloc(100*sizeof(char));

l1: printf("\nЧто хотите делать?\n1.Закодировать\n2.Раскодировать\n");

p=getch();

if((p!='1')&&(p!='2'))

goto l1;

int s=100*sizeof(char);

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

kod[i]=alf[i];

if(p=='1')

{

fp=fopen("D:/123.txt","r+");

fgets(S,100,fp);

fclose(fp);

printf("\nВведите кодовое слово: ");

scanf("%s",&word1);

for(i=0;i<strlen(word1);i++)

kod[i]=word1[i];

i=-1;

for(int j=strlen(word1);j<52;j++)

{

re: k=0;

i++;

for(int e=0;e<strlen(word1);e++)

if(word1[e]==alf[i])

k=1;

if(!k)

kod[j]=alf[i];

else

goto re;

}

S=kode(S,kod);

remove("D:/124.txt");

fp=fopen("D:/124.txt","a+");

fprintf(fp,"%s",S);

fclose(fp);

}

else

{

fp=fopen("D:/124.txt","r+");

fgets(S,100,fp);

fclose(fp);

printf("\nВведите кодовое слово: ");

scanf("%s",&word1);

for(i=0;i<strlen(word1);i++)

kod[i]=word1[i];

i=-1;

for(int j=strlen(word1);j<52;j++)

{

re1: k=0;

i++;

for(int e=0;e<strlen(word1);e++)

if(word1[e]==alf[i])

k=1;

if(!k)

kod[j]=alf[i];

else

goto re1;

}

S=rekode(S,kod);

remove("D:/125.txt");

fp=fopen("D:/125.txt","a+");

fprintf(fp,"%s",S);

fclose(fp);

}

printf("\n%s\t%s",S,kod);

fp=fopen("D:/124.txt","r+");

fclose(fp);

goto l1;

getch();

}

  1. Контрольный пример

4.Блок-схема

5. Вывод

При выполнении данной лабораторной работы я получил навыки программирования алгоритмов кодирования информации.

6.Список использованной литературы

  1. Шилдт Г. Искусство программирования на C++. БХВ.2005

  2. Шилдт Г. C++ Руководство для начинающих. Вильямс.2005

  3. Страуструп Б. Язык программирования С++. Специальное издание, 3-изд. Бином.2004