Лабораторная работа №5 Вариант 21
.doc
ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ
ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ
ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
ЛИПЕЦКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
КАФЕДРА АВТОМАТИЗИРОВАННЫХ СИСТЕМ УПРАВЛЕНИЯ
Лабораторная работа №5
по дисциплине
«Технология программирования»
на тему:
«Программирование алгоритмов кодирования информации»
|
Студент |
|
|
|
|
|
||||||||
|
|
|
подпись, дата |
|
фамилия, инициалы |
|
||||||||
|
Группа |
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
||||||||
|
Принял |
|
|
|
|
|
||||||||
|
|
|
|
|
Домашнев П.А. |
|
||||||||
|
ученая степень, звание |
|
подпись, дата |
|
фамилия, инициалы |
|
Липецк 2010
-
Задание
Написать программу, осуществляющую кодирование и раскодирование последовательности из входного файла заданным методом и сохраняющую результат в выходной файл. Имена файлов вводит пользователь. Режим работы с файлам – двоичный. Для алгоритмов шифрования/дешифрования пользователь должен вводить также ключ.
Вариант 21
Алгоритм шифрования |
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();
}
-
Контрольный пример
4.Блок-схема
5. Вывод
При выполнении данной лабораторной работы я получил навыки программирования алгоритмов кодирования информации.
6.Список использованной литературы
-
Шилдт Г. Искусство программирования на C++. БХВ.2005
-
Шилдт Г. C++ Руководство для начинающих. Вильямс.2005
-
Страуструп Б. Язык программирования С++. Специальное издание, 3-изд. Бином.2004