Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // ConsoleApplication1.cpp: определяет точку входа для консольного приложения.
- //
- #include "stdafx.h"
- #include <iostream>
- #include <string>
- #include <fstream>
- #include <cctype>
- 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]) || Buf[i]<'a' || Buf[i]>'z') 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) //tutu nepravilno perevodit!!!!!!!!!!
- {
- 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;
- }
- Buf[i] = tolower((int)Buf[i]);
- // 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);
- }
- itog += " ";
- 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;
- }
- try {
- while (!Out.eof())
- {
- Out >> Buffer;
- if (Out.fail())
- {
- cerr << "Ошибка при вводе из файла";
- return 2;
- }
- if (!decode(Buffer, Albet))
- {
- cerr << "Проблема с передачей массива";
- return 3;
- }
- }
- Out.close(); // тут throw exeptiot failbit
- }
- catch (...)
- {
- cerr << "There is a problem with the file";
- return 5;
- }
- Sdvig = Analyt(Albet);
- if (Sdvig == -500)
- {
- cerr << "Проблема с передачей массива";
- return 3;
- }
- Out.open(OutWay.c_str()); //dlya decode
- if (!Out.is_open())
- {
- cerr << "Файл ввода может быть открыт! Проверьте путь и попробуйте снова!" << endl;
- return 1;
- }
- try {
- while (!Out.eof())
- {
- Out >> Buffer;
- if (Out.fail())
- {
- cerr << "Ошибка при вводе из файла";
- return 2;
- }
- BufOut = decodedLine(Buffer, Sdvig); //zachem?
- // if (BufOut!=)
- In << BufOut;
- }
- Out.close();
- In.close();
- }
- catch (...)
- {
- cerr << "There is a problem with the file";
- return 2;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement