Кодировщик-декодировшик
Рефераты >> Программирование и компьютеры >> Кодировщик-декодировшик

3.5. Вызов и загрузка

Запуск программы происходит путем запуска файла coDec. exe

3.6 Входные и выходные данные

Файлы-источники при кодировке по возможности должны быть с расширением txt, в то время как файл-приемник может иметь любое. Вызвано это причинами, описанными ранее в пункте 3.2. При декодировке ограничений нет.

4. Текст программы

// Шифратор-дешифратор

Раздел №1

# include <stdio.h>

# include <io.h>

# include <stdlib.h>

# include <iostream.h>

# include <string.h>

# include <math.h>

int main ()

{ Раздел №2

FILE *fp,*fp2; / *указатели на поток*/

int i,k,Sum,Sum_contr,pointer,select;

int W[]={1,2,3,4,5,6,7,8,9,10}; /*массив проверки*/

int Y[10]; /*массив для кодовой перестановки*/

char B[11]; /*массив для перестановленных символов*/

char c; /*переменная для хранения символа*/

char fname[20], fname2[20]; /*массивы для имен файлов*/

/* О с н о в н о е т е л о п р о г р а м м ы */

Раздел №3

/*Выбор кодирования-декодирования*/

while (1)

{

printf ("\nChoose coder(0) or decoder (1) ");

scanf("%d",&select);

if ((select==0)||(select==1)) break;

while (getchar()!='\n');

}

Раздел №4

/*Ввод длины кодовой последовательности*/

while (1)

{

printf ("\nInput length of code k(1 to 10) ");

scanf ("%d", &k);/* ввод десятичного целого*/

if (k>=1&&k<=10&&k==ceil(k)) break;

while (getchar()!='\n') ;

printf ("\n Error!!! K must be integer from 1 to 10 ");

}

Раздел №5

/*Ввод перестановки*/

while (1)

{

printf ("\n Input %d elements \n",k);

for (Sum=0,Sum_contr=0,i=0; i<k; i++)

{

printf ("Element[%d]:",i+1);

scanf ("%d", &Y[i]);

Sum+=Y[i];

Sum_contr+=W[i]; /*Вычисление контрольной суммы*/

}

if (Sum==Sum_contr) break;

while (getchar()!='\n');

printf ("\n Error!!! Repeat input");

}

/*Очистка входного потока*/

while (getchar()!='\n') ;

Раздел №6

/* Вводименифайла-источника */

puts ("\nInput name of file-sourche :");

gets (fname);

/*Открытие файла-источника*/

while((fp=fopen(fname,"r"))==NULL) /*открытие файла для чтения*/

{

puts("Error!!! Can't open file \nInput name of file-source\n");

gets (fname);

}

/* Ввод имени файла-приемника */

puts ("\nInput name of file for results:");

gets (fname2);

/*Создание файла-приемника*/

if ((fp2=fopen(fname2,"w"))==NULL) /*открытие файла для записи*/

{

perror(fname2);

return 1;

}

Раздел №7

/*Шифрация и запись в файл-приемник*/

if (select==0)

{

while (1)

{

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

{

c=fgetc(fp);

if (feof(fp)&&i==0) return 0;

if (feof(fp)&&i>0)

B[i+1]=' ';

else

B[i+1]=c;

}

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

{

pointer=Y[i];

putc(B[pointer],fp2);

}

if (feof(fp)) break;

}

}

Раздел №8

/*Дешифрация и запись в файл-приемник*/

else

{

while (1)

{

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

{

c=getc(fp);

pointer=Y[i];

B[pointer]=c;

}

if (feof(fp)) break;

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

putc(B[i+1],fp2);

}

}

Раздел №9

/*Закрытие файла источника и приемника*/

fclose(fp);

fclose(fp2);

}


Страница: