Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
1
Добавлен:
07.04.2023
Размер:
1.76 Кб
Скачать

#include<fstream>
#include<bitset>
#include <iostream>
#include <clocale>

using namespace std;
int main()
{
    setlocale(LC_ALL,"Russian");
    int lengt;
    cout<<"Введите кол-во битов = ";
    cin>>lengt;
    cout<<endl;
    ifstream FL("D:\\Test\\Test.txt");// Входной файл
    string inStr;
    FL>>inStr;
    FL.close();
    size_t i;
    bitset<8> BitStr;
    string strInBin;

    for (i=0;i<inStr.size();i++)
    {
        BitStr=inStr[i];
        strInBin+=BitStr.to_string();
    }
    while (strInBin.length()%lengt) strInBin+="0";//Добиваем 0 до целого числа букв
    string strOutBin;
    size_t b=0;
    size_t j=0;
    string outStr;
    for (i=0;i<strInBin.length();i++)
    {
      strOutBin+=strInBin[i];
      outStr+=strInBin[i];
      j++;
      if (strInBin[i]=='1') b^=1;
      if ((j%lengt)==0)
      {
          cout<<outStr;
          if (b)
          {
              strOutBin+="1";
              outStr+="1";
                cout<<" нечетное кол-во 1 значит добавляем 1. Получилось ";
                //cout<<j<<" ";
          }
          else
          {
              strOutBin+="0";
              outStr+="0";
              cout<<" четное кол-во 1 значит добавляем 0. Получилось ";
              //cout<<j<<" ";
          }
          b=0;
          cout<<outStr<<endl;
          outStr.clear();
      }
    }
    while (strOutBin.length()%8 == 0) strOutBin+="0";
    outStr.clear();
    ofstream FL2("D:\\Test\\Test_answer.txt");//Выходной файл
    for (i=0;i<strOutBin.length();i+=8)
    {
        BitStr.reset();
        for (int j=0;j<8;j++) if (strOutBin[i+j]=='1') BitStr[7-j]=1;
        FL2<<char(BitStr.to_ulong()&0xff);
    }
    FL2.close();
}
Соседние файлы в папке лабы мышев