Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- #include <fstream>
- using namespace std;
- const int NumberOfA = 26; //kol-vo bukv
- bool decode(string Buf, int *Mas)
- {
- if (Buf.length()==0) return true;
- if (Mas==0) return false;
- size_t i;
- for (i=0;i<Buf.length();i++)
- {
- if (!isalpha(Buf[i])) continue;
- Mas[(int)Buf[i]-97]++;
- }
- return true;
- }
- int Analyt(int *Mas)
- {
- if (Mas==0) return -500;
- size_t i;
- int x;
- int Max=0;
- for (i=0;i<NumberOfA;i++)
- {
- if (Mas[i]>Max)
- {
- x=i;
- Max=Mas[i];
- }
- }
- x-=4;
- if (x<0) x+=26;
- return x;
- }
- string decodedLine(string Buf, int Sdv)
- {
- if (Buf.length()==0) return "";
- if (Sdv==0) return Buf;
- string itog="";
- size_t i;
- for (i=0;i<Buf.length();i++)
- {
- if (!isalpha(Buf[i])) {
- itog+=Buf[i];
- continue;
- }
- // if((int)Buf[i]-Sdv<97) itog+=122+(97-(int)Buf[i]-Sdv); //rabotaуt .. удали комментарий
- if((int)Buf[i]-Sdv<97) itog+=122-(97-Buf[i]+Sdv)-1;
- else itog+=(char)((int)Buf[i]-Sdv);
- }
- return itog;
- }
- int main()
- {
- int Albet[NumberOfA] = {0};
- int Sdvig;
- setlocale(LC_ALL,"rus");
- ifstream Out;
- ofstream In;
- string OutWay, InWay, Buffer, BufOut;
- cout<<"Введи путь до зашифрованного файла";
- cin>>OutWay;
- Out.open(OutWay.c_str());
- if (!Out.is_open())
- {
- cerr<< "Файл ввода может быть открыт! Проверьте путь и попробуйте снова!" << endl;
- return 1;
- }
- cout<<"Введи путь до файла вывода";
- cin>>InWay;
- In.open(InWay.c_str());
- if (!In.is_open())
- {
- cerr<< "Файл вывода может быть открыт! Проверьте путь и попробуйте снова!" << endl;
- return 1;
- }
- while (!Out.eof())
- {
- Out>>Buffer;
- if (Out.fail())
- {
- cerr<<"Ошибка при вводе из файла";
- return 2;
- }
- cout<<"Vsyo ok3223";
- if(!decode(Buffer, Albet))
- {
- cerr<<"Проблема с передачей массива";
- return 3;
- }
- }
- cout<<"Vsyo ok33";
- Out.close(); // тут throw exeptiot failbit
- cout<<"Vsyo ok23";
- Sdvig=Analyt(Albet);
- if(Sdvig==-500)
- {
- cerr<<"Проблема с передачей массива";
- return 3;
- }
- Out.open(OutWay.c_str()); //dlya decode
- if (!Out.is_open())
- {
- cerr<< "Файл ввода может быть открыт! Проверьте путь и попробуйте снова!" << endl;
- return 1;
- }
- while (!Out.eof())
- {
- Out>>Buffer;
- if (Out.fail())
- {
- cerr<<"Ошибка при вводе из файла";
- return 2;
- }
- BufOut=decodedLine(Buffer, Sdvig); //zachem?
- // if (BufOut!=)
- In<<BufOut;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement