Добавил:
morpex_1_
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:лабы мышев / main
.cpp
#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();
}