Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将C++中的动态位集调整为用户输入的长度 这个C++程序要求用户输入他/她将进入的位序列的长度。这个长度变量名为xx,类型为int。我使用三个初始大小为5的动态位集,它们是inpSeq、operSeq和bit。我正在调整位集的大小 inpSeq.resiz_C++_Boost_Boost Dynamic Bitset - Fatal编程技术网

将C++中的动态位集调整为用户输入的长度 这个C++程序要求用户输入他/她将进入的位序列的长度。这个长度变量名为xx,类型为int。我使用三个初始大小为5的动态位集,它们是inpSeq、operSeq和bit。我正在调整位集的大小 inpSeq.resiz

将C++中的动态位集调整为用户输入的长度 这个C++程序要求用户输入他/她将进入的位序列的长度。这个长度变量名为xx,类型为int。我使用三个初始大小为5的动态位集,它们是inpSeq、operSeq和bit。我正在调整位集的大小 inpSeq.resiz,c++,boost,boost-dynamic-bitset,C++,Boost,Boost Dynamic Bitset,将C++中的动态位集调整为用户输入的长度 这个C++程序要求用户输入他/她将进入的位序列的长度。这个长度变量名为xx,类型为int。我使用三个初始大小为5的动态位集,它们是inpSeq、operSeq和bit。我正在调整位集的大小 inpSeq.resizexx;例如编译程序时,会出现一个非常大的错误列表,我觉得我无法将其粘贴到这里。但我确信这些错误都与这个变量xx有关,在将其用作调整位集大小的变量之前,代码编译得很好。调整位集大小的方式有什么问题?我可以在不要求用户输入inpSeq位集长度的情

将C++中的动态位集调整为用户输入的长度 <>这个C++程序要求用户输入他/她将进入的位序列的长度。这个长度变量名为xx,类型为int。我使用三个初始大小为5的动态位集,它们是inpSeq、operSeq和bit。我正在调整位集的大小 inpSeq.resizexx;例如编译程序时,会出现一个非常大的错误列表,我觉得我无法将其粘贴到这里。但我确信这些错误都与这个变量xx有关,在将其用作调整位集大小的变量之前,代码编译得很好。调整位集大小的方式有什么问题?我可以在不要求用户输入inpSeq位集长度的情况下生成inpSeq大小的位集吗

#include <iostream>  //Standard library.
#include <boost/dynamic_bitset.hpp>    //Library for 10 handling.
#include <vector>    //Variable size array.
#include <algorithm> //We use sorting from it.

using namespace std;

int main()
{
 int y = 0;
 int turnCount = 0;
 int count1 = 0, count0 = 0;
 int xx = 0; 
 boost::dynamic_bitset<> inpSeq(5);
 int polyLoc;
 boost::dynamic_bitset<> operSeq(5);
 boost::dynamic_bitset<> bit(5);
 vector <int> xorArray;
 vector <int> keyReg;
 cout << "What is the legnth of the sequence?";
 cin << xx;
 inpSeq.resize(xx);
 operSeq.resize(xx);
 bit.resize(xx);
 cout << "Enter a bit sequence: \n";
 cin >> inpSeq;
 int seq_end = inpSeq.size() - 1;
 cout << "Enter polynomial:";
 cin >> polyLoc;
 while(polyLoc>0)
 {
  xorArray.push_back(polyLoc%10);
  polyLoc/=10;
 }
 cout << "xorArray is: ";
 for ( unsigned int i = 0; i < xorArray.size(); i++)
 {
  cout << xorArray[i] << " ";
 }
 sort(xorArray.rbegin(), xorArray.rend());
 cout << "\n";
 operSeq = inpSeq;
 keyReg.push_back(inpSeq[0]);
  int x = xorArray[0];
  cout << "x is: " << x << "\n";
  for ( unsigned int  i = 0; i < xorArray.size();  i++)
  {
   cout << xorArray[i] << "\n";
  }
  cout << "bit 3 of initial " << bit[seq_end] << "\n";
  do {
  for (unsigned int r = 1; r < xorArray.size(); r++)
  {
  bit[seq_end] = operSeq[x];
  y = xorArray[r];
  bit[seq_end] = bit[seq_end] ^ operSeq[y];
  }
  operSeq >>= 1;
  operSeq[seq_end]  = bit[seq_end];
  keyReg.push_back(operSeq[0]);
  turnCount ++;
  cout << "--\n";
 }
 while ((operSeq != inpSeq) && (turnCount < 20));
 cout << "Generated key is: ";
 for (unsigned int k = 0; k < keyReg.size(); k++)
  {
  cout  <<  keyReg[k];
  }
 cout << "\n";
 cout << "Bit 1 positions: ";
 for ( unsigned int g = 0; g < xorArray.size(); g++)
 {
  cout << xorArray[g];
 }
 cout << "\n";
 cout << "Key length is: " << keyReg.size();
 cout << "\n";
 for ( unsigned int i = 0; i < keyReg.size(); i++)
 {
  if (keyReg[i]==1)
   {
    count1++;
   }
  else {
    count0++;
  }
 }
 cout << "Number of 0's: " << count0 << "\n";
 cout << "Number of 1's: " << count1 << "\n";
 if ( keyReg.size()%2 ==0)
  {
   cout << "key length is even. \n";
   if (count1==count0)
    {
   cout << "Key is perfect! \n";
    }
  else {
   cout << "Key is not perfect! \n";
    }
 }
  else
   {
  cout << "key length is odd. \n";
   if  ((count1==count0+1) || (count0==count1+1))
    {
   cout << "Key is perfect! \n";
    }
  else {
   cout << "Key is not perfect! \n";
    }
   }
  cin.get();
}

cin>xx;哦,对不起。我将删除问题的这一部分。请您在下一部分帮助我,调整大小而不要求用户输入长度。好吧,如果您使用int,那么sizeofint*8将是存储int的二进制版本所需的最大位数。因此,我不认为动态位集的优势,而只使用常规位集。在任何情况下,dynamic_bitset和bitset都有一个构造函数,该构造函数接受整数值并创建一个位集,该位集包含表示int值的位。查看3 arg动态_位集构造函数,忽略第三个参数,因为它默认为要使用的分配器。std::bitset mybitsetsome_int_值;因此,如果int值为1024,则位集将为1000000000,前导位均为0。然后像现在一样索引位,然后使用动态位集的字符串构造函数。在我发给你的链接里。它是将基本_字符串作为第一个参数的构造函数。因此,如果用户输入一个二进制字符串,则需要对其进行验证,然后可以使用该字符串构造动态_位集:string input;//。。。动态位集输入;你需要一个小的主程序,你可以用它来做实验,只需要练习动态位集,这样你就可以更熟悉它能做什么。如果一个优秀的程序员不熟悉类的工作方式,他们会这么做。