0
#include <iostream>
#include <fstream>
using namespace std;

class codemaster
{
public:
    int Q=1000;
    void coder()
{

    ifstream f("D:\\sample\\number.txt");               //Откуда берем
    ofstream f1("D:\\sample\\code.txt");                //Куда забираем
     while(!f.eof())                                       //Цикол перебора символов
                {

                        char ch;
                        f.get(ch);

                        int n=Q+(int)(ch);                  // Доводим до 4-хзначного числа

                        int arr[4];
                        for (int i=3;i>=0;i--)           // Вычленение цифр и применение формулы: (цифра + 7)%10
                        {
                            arr[i]=(n%10+7)%10;
                            n/=10;
                        }

                        int t=arr[0];                   //Перемена местами цифр
                        arr[0]=arr[2];
                        arr[2]=t;
                             t=arr[1];
                        arr[1]=arr[3];
                        arr[3]=t;

                        for (int i=0;i<4;i++)           //запись в файл закодированной последовательности
                        {
                            f1<<arr[i];
                        }
                        f1<<" ";

                };
}
    void decoder()
    {
    ifstream f("D:\\sample\\code.txt");
    ofstream f1("D:\\sample\\decode.txt");
    char s[4];
     for(f >> s; !f.eof(); f >> s)
     {
         int arr[4];

         for (int i=0;i<4;i++)
         {
             arr[i]=s[i]-'0';
             cout<<arr[i];
         }
         cout<<"-";

        int t=arr[0];
        arr[0]=arr[2];
        arr[2]=t;
            t=arr[1];
        arr[1]=arr[3];
        arr[3]=t;
        for(int i=0; i<4;i++)
    {
        for (int j=16;j>0;j--)
        {
            if ( j%10==arr[i])
            {
                arr[i]=j-7;

                break;
            }

        }
    }
    int acode;
    cout<<(char)(arr[1]*100+arr[2]*10+arr[3])<<endl;


     }
    }
};

int main()
{

    codemaster p;
    p.coder();
    //p.decoder();


    return 0;
}

Делаю алгоритм, шифрующий текст файла. Почему-то метод coder повторяет последнюю последовательность цифр. Прошу вас, помогите мне разобраться.

0 Answers0