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

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

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

2

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

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

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

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

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

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

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

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

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

Студент

Ельшаева Н.А.

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

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

Группа

АС-09

Принял

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

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

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

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

Липецк 2010

1. Задание

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

Вариант

4 – гаммирование

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

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

#include <stdlib.h>

#include <stdio.h>

#include <string.h>

#include <time.h>

#include <conio.h>

#include <locale.h>

const int N=32;

char* code(char* str, int* mass)

{

int count = 0;

char *res = (char*)malloc(strlen(str)*sizeof(char));

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

res[i]=str[i];

for(int i = 0; i < strlen(res); i++, count++)

{

if(count == (N-1))

count = 0;

res[i] = ((str[i])^mass[count]);

}

return res;

}

int main()

{

setlocale(LC_ALL,"Rus");

srand (time(NULL));

int mass[N];

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

mass[i] = rand()%100;

char file[100]="",str[100];

printf("Введите имя файла: ");

scanf("%s",file);

FILE *fp=fopen(file,"r+");

fgets(str,100,fp);

fclose(fp);

printf("\nИсходная строка: %s",str);

printf("\nЗакодированная строка: %s",code(str, mass));

printf("\nРаскодированная строка: %s",code(code(str, mass),mass));

getch();

}

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

Содержимое файла in.txt: