#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 повторяет последнюю последовательность цифр. Прошу вас, помогите мне разобраться.