1

Тема: допоможіть з дешифровкою

Шифр Цезаря. Як зробити,щоб результат шифрування зберігався і з нього робилося дешифрування?



#include "stdafx.h"
#include <iostream>
#include <string>
#include <conio.h>
#include <stdlib.h>
#include <sstream>
#include <fstream>

using namespace std;
    int main()
    {
        setlocale(LC_ALL, "rus");
        int k; 
        int shift; 
        string result = ""; 
        cout<<"Выберите 1 для шифрования или 2 для дешифрования\n";
        cin>>k; 
        switch (k) 
        {
        case 1: 
            {
            cout<<"Введите значение сдвига для шифрования\n";
            cin>>shift;
            if (shift > 26) 
                shift = shift % 26;
            setlocale(LC_ALL,"Russian");
            string s; 
            ifstream in("Test.txt");
            getline(in,s);
            cout<<"Текст: \n"<<s<<endl;
            in.close(); 
            for (int i = 0; i < s.length(); i++)
                {
                    if (((int)(s[i]) < 65)||((int)(s[i]) > 122))
                        result += s[i];
                    if (((int)(s[i]) >= 97) && ((int)(s[i]) <= 122))
                        {
                            if ((int)(s[i]) + shift > 122)
                                result += (char)((int)(s[i]) + shift - 26);
                            else
                                result += (char)((int)(s[i]) + shift);
                        }
                     if (((int)(s[i]) >= 65) && ((int)(s[i]) <= 90))
                        {
                            if ((int)(s[i]) + shift > 90)
                                result += (char)((int)(s[i]) + shift - 26);
                            else
                                result += (char)((int)(s[i]) + shift);
                        }
                }
            cout<<"Результат:\n";
            cout<<result; 
            break;
            }
        case 2: 
            {
            cout<<"Введите значение сдвига для расшифровки\n";
            cin>>shift;
            if (shift > 26) 
                shift = shift % 26;
            setlocale(LC_ALL,"Russian");
            string s;
            ifstream in("Test.txt");
            getline(in,s);
            cout<<"Текст: \n"<<s<<endl;
            in.close();
            for (int i = 0; i < s.length(); i++)
                {
                    if (((int)(s[i]) < 65)||((int)(s[i]) > 122))
                        result += s[i];
                    if (((int)(s[i]) >= 97) && ((int)(s[i]) <= 122))
                        {
                            if ((int)(s[i]) - shift < 97)
                                result += (char)((int)(s[i]) - shift + 26);
                            else
                                result += (char)((int)(s[i]) - shift);
                        }
                     if (((int)(s[i]) >= 65) && ((int)(s[i]) <= 90))
                        {
                            if ((int)(s[i]) - shift < 65)
                                result += (char)((int)(s[i]) - shift + 26);
                            else
                                result += (char)((int)(s[i]) - shift);
                        }
                }
            cout<<"Результат:\n";
            cout<<result;
            break;
            }
        default: 
            {
            cout<<"Error value\n";
            break;
            }
        }
        _getch();
        return 0;
    }

2

Re: допоможіть з дешифровкою

Робіть, як вмієте. Якщо це для вас - не проблема, то і решту зробите.

3

Re: допоможіть з дешифровкою

Ви вже використовуєте ifstream для читання даних з файлу. Використайте ofstream для запису.