1

C++ を使用して入力をバイナリ形式に変換するプログラムを作成しようとしています。ただし、追加の各入力を変換し続ける do-while ループ部分に少し問題があります。do-while ループの条件がめちゃくちゃなので、出力は無限ループになります。

do{
   cin>>number;
   if (number<0)
      cout<< number<< " (base 10) is not a positive integer"<<endl;
   else if (number==0) 
      cout<< number<< " (base 10) = 0 (base 2) ";
   else {
      binary= binaryConverter(number);
      cout<< number << " (base 10) =";
      cout<< binary << " (base 2)";
   }
   cout<< endl;
}while(????);
4

2 に答える 2

3

これは、終了信号 (CTRL-C など) が受信されるまでループし、ストリームが終了します。

while(cin >> number)
于 2012-04-19T19:24:50.470 に答える
0

正規の C++ 入力ループは次のようになります。

ItemType item;
while ( input_stream >> item ) {
   // Do something with item, for example:
   //   std::cout << item;  or,
   //   container.push_back(item);  or,
   //   sum += item;  or whatever.
}

この種のループは、入力項目ごとに 1 回だけ実行され、ファイルの終わり (ディスク ファイルの終わりか、コンソールからの EOF シグナルか) で停止します。また、入力が項目の形式に適合しなくなった場合にも停止します (たとえば、入力に文字 Q が含まれている場合) ItemTypeint

具体的には、orをループ条件として使用しないでください。aを入力ループとして使用することはほとんどありません。.eof().good()do-while

あなたの場合、ループは次のようになります。

while(std::cin >> number) {
  std::cin>>number;
  if (number<0)
    std::cout<< number<< " (base 10) is not a positive integer";
  else if (number==0) 
    std::cout<< number<< " (base 10) = 0 (base 2) ";
  else {
    binary= binaryConverter(number);
    std::cout<< number << " (base 10) =";
    std::cout<< binary << " (base 2)";
  }
  std::cout<< "\n";
}

Ps 私はあなたのコードを、広く採用されている他の 2 つの標準に準拠するように変更しusing namespace std;ましstd::endl'\n'

于 2012-04-19T19:34:46.303 に答える