Форум программистов, компьютерный форум CyberForum.ru

Программа шифрования и дешифрования. - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ консольное приложение C++ http://www.cyberforum.ru/cpp-beginners/thread404341.html
Нажимаю создать Win32 console application, пишет - переход на веб страницу отменен,что это может быть?
C++ Ошибка в нахождении точек пересечения #include <cstdlib> #include <iostream> #include <math.h> using namespace std; int main(int argc, char *argv) { int a,b,a1,b1,a2,b2,x,y,x1,x2,y1,y2; float D; http://www.cyberforum.ru/cpp-beginners/thread404332.html
C++ Найти максимальный элемент в каждом столбце матрицы
Ребята помогите мне с решением Дана матрица целых чисел МxN элементов . Найти максимальный элемент в каждом столбце матрицы. Я новичок самоучка помогите как ее решить в С++.
Поиск символа A в слове В C++
пытаюсь написать программу для нахождения количества символов В в слове А. написал вот этот код, но он постоянно зависает. подскажите в чем ошибка, пожалуйста :) #include <iostream.h> #include <stdio.h> void main() {int i=0,j=0,n=1,m; char str,b; cout <<"Vvod stroki A\n";
C++ Как переделать двусвязный список в циклический c++ http://www.cyberforum.ru/cpp-beginners/thread404315.html
Как переделать двусвязный список в циклический c++
C++ Что делает этот участок кода? Уважаемые программисты не могу разобраться что делает следующий кусочек кода, помогите пожалйста int ch; if( ( ch = getch() ) == 0 ) ch = getch() | ( bioskey(2) & 3 ? 0x200 : 0x100 ); return ch; и что означают эти цифры? 0x200 : 0x100 подробнее

Показать сообщение отдельно
Cofeee
Сообщений: n/a

Программа шифрования и дешифрования. - C++

11.12.2011, 15:39. Просмотров 1176. Ответов 0
Метки (Все метки)

Пытаюсь реализовать что-то на подобие шифра Цезаря. Программа должна открывать файл, считывать поэлементно его содержимое и если будет находить соотв. элемент - сдвигать его и записывать в новый файл, а если соотв. эл. не найдет то запис. не изменённым. Проблема в том что, когда начинаю сравнивать исходный файл и дешифрованый - обнаруживаю, что файлы не идентичны. А именно один элемент неправильно дешифрован. Подскажите в чем проблема пожалуйста!
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <stdio.h>
#include <string>
using namespace std;
 
char Shifr(char* ABC, char c, int n, int len) // --------------------- ф-я Шифрования
{
    for(int i = 0; i < len; i++)
    {
        if(ABC[i] == c)
        {
            int q = i + n;
            if ( q  >= len)
            {
                return ABC[q - len];
            }
            else
                return ABC[q];
            
        }
    }
    return c;
}
 
char Deshifr(char* ABC, char c, int n, int len) //------------------- ф-я Дешифрования
{
    for(int i = 0; i < len; i++)
    {
        if(ABC[i] == c)
        {
            int q = i - n;
            if (q < 0)
            {
                return ABC[len + q];
            }
            else
                return ABC[i - n];
             
        }
    }
    return c;
}
 
 
int main() // - - - - - - - - - - - - - - - - - - - - - - - - - - - -  main()
     
{
    setlocale(LC_ALL,"russian");
    
    char text[126];
    char x[100];
    int n,num;
    
    FILE *alf , *ish , *sh , *d_sh;
 
      alf = fopen ( "Alfavit.txt", "rb" )
      int q = 0;
 
      while ( !feof (alf))
      {
            fread ( &text[q] ,1 ,1 ,alf);
            q++;
      }
 
      fclose (alf);
 
    cout << "Введите размер сдвига:";
    cin>> n;
    cout << endl;
 
    int i = 0;
    ish = fopen ( "смайл1.wav" , "rb" );
    sh = fopen ( "Shifr.oop" , "wb" );
    int b;
      while ((b =  fgetc (ish))!=EOF)
      {
          b = Shifr(text,b,n,126);//------ Вызов функции Шифрования
          fputc(b, sh);
          i++;
      }
          
      int  p = i;
      cout << endl << p << endl;
 
      fclose(ish);
      fclose (sh);
 
      cout <<"Файл зашифрован !"<<endl<<endl;
 
    do {
    cout <<"1.Выйти"<<endl;
    cout <<"2.Дешифровать"<<endl;
    cout <<"Ваш выбор:";
 
    cin >> num;
    switch (num)
    {
    case 1:
        break;
    case 2:
        {
            int i = 0;
            cout <<"Файл дешифрован !"<<endl;
            sh = fopen ( "Shifr.oop" , "rb" );
            d_sh = fopen ( "DeShifr.wav" , "wb" );
            int v;
            while ( (v = fgetc(sh))!=EOF)
            
                {
                    v = Deshifr(text,v,n,126);//------ Вызов функции Дешифрования
                    fputc(v, d_sh);
                    i++;
                }
 
            int  j = i ;
            cout << endl << j << endl;
            fclose(sh);
            fclose (d_sh);
            break;
        }
 
        
    } cout<<endl;
        
    }
    while ( num != 1);
     
    return 0;
}
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru