Написание программы, которая на основе входного текстового файла формирует таблицу частот символов (Лабораторная робота № 2), страница 2

#include <iomanip>

#include <math.h>

#include <stdlib.h>

#include <sstream>

#define st (int)'А' //начало алф

#define fin (int)'Я' //конец алф

#define vol 32 //размер алфавита

using namespace std;

void encrInt(char* inf, char* outf) //шифр по числу

{

      int shift; //Величина сдвига

      cout<<"Enter value shift for encryption\n";

    cin>>shift;

    if (shift > vol)

        shift = shift % vol; //Вычисление сдвига

    cout<<"Read of file...\n";

    ifstream in(inf);

      ofstream out(outf);

      char c;

    while(in.get( c )) { //читаем до конца файла

        c=toupper(c); //приводим к заглавным буквам

            if (c < st || c > fin) //проверяем кирилическая ли буква

             out<<c; //если нет - выводим как есть

            else {      //если кирилица

             if ((int)(c) + shift > fin) //Если буква, после сдвига выходит за пределы алфавита

                         out<< (char)((int)(c) + shift - vol); //уменьшаем на обьем алфавита

             else //Если буква может быть сдвинута в пределах алфавита

                 out<< (char)((int)(c) + shift); //сдвигем

        }

     }

      cout<<"Encryption complete!\n";

}

void encrW(char* inf, char* outf) //шифр по слову

{

      int shift[1000]; //величины сдвигов

      string s;

      int i,j=0;

      cout<<"Enter word for encryption\n"; //слово для сдвига

    cin>>s;

      for (i = 0; i < s.length(); i++) //вычисляем сдвиг по каждой букве слова

            shift[i]=(int)s[i];

    cout<<"Read of file...\n";

    ifstream in(inf);

      ofstream out(outf);

      char c;

    while(in.get( c )) { //до конца файла

        if(j>i) //проверяем не вышли ли за длинну слова

                  j=0;

            c=toupper(c);

            if (c < st || c > fin)

             out<<c;

            else {     

             while ((int)(c) + shift[j] < st) //Если буква, после сдвига выходит за пределы алфавита

                        shift[j]+=vol;

                   while ((int)(c) + shift[j]> fin) //Если буква, после сдвига выходит за пределы алфавита

                        shift[j]-=vol;

                   out<< (char)((int)(c) + shift[j]); //сдвигаем

                   j++; //счетчик размеров сдвига

            }

     }

      cout<<"Encryption complete!\n";

}

void decrW(char* inf, char* outf) //дешифр по слову

{

      int shift[1000];

      string s;

      int i,j=0;

      cout<<"Enter word for decryption\n";

    cin>>s;

      for (i = 0; i < s.length(); i++)

            shift[i]=(int)s[i];

    cout<<"Read of file...\n";

    ifstream in(inf);

      ofstream out(outf);

      char c;

    while(in.get( c )) {

        if(j>i)

                  j=0;

            c=toupper(c);

            if (c < st || c > fin)

             out<<c;

            else {     

             while ((int)(c) - shift[j] < st) //Если буква, после сдвига выходит за пределы алфавита

                        shift[j]-=vol;

                   while ((int)(c) - shift[j]> fin) //Если буква, после сдвига выходит за пределы алфавита

                        shift[j]+=vol;

                   out<< (char)((int)(c) - shift[j]);

                   j++;

            }

     }

      cout<<"Decryption complete!\n";

}

void decrInt(char* inf, char* outf) //дешифр по числу

{

      int shift; //Величина сдвига

      cout<<"Enter value shift for decryption\n";

      cin>>shift;

      if (shift > vol)

            shift = shift % vol;

      cout<<"Read of file...\n";

      ifstream in(inf);

      ofstream out(outf);

      char c;

      while(in.get( c ))

      {

            c=toupper(c);

            if (c < st|| c > fin)

                  out<<c;

            else  {

                  if ((int)(c) - shift < st)  //Если буква, после сдвига выходит за пределы алфавита

                        out<< (char)((int)(c) - shift + vol);

                  else //Если буква может быть сдвинута в пределах алфавита

                        out<< (char)((int)(c) - shift);

            }

    }

      cout<<"Decryption complete!\n";

}

int main(int argc, char* argv[])

    {

        setlocale(LC_ALL,".1251"); //работаем с русским алфавитом

            if(!strcmp(argv[1], "--EI"))

            encrInt(argv[2],argv[3]);

            else if(!strcmp(argv[1], "--DI"))