1

この質問がよくわかりません。double を要求して読み取り、ユーザーが浮動小数点数を正しく入力するまでそのプロセスを繰り返すコードを作成する必要があります。

doubleのタイプではありませんfloating pointか? では、このコードはどのように終了するのでしょうか?

編集 - わかりましたので、プログラムは double を取り込んで、入力された値が float になるまでそれを続ける必要があるかもしれません。つまり、入力の精度が float ではなく double の範囲内にある限り、入力を受け取り続けます。ただし、入力の精度が float の精度内である場合、プログラムは終了します。これは正しいと思いますか?

4

2 に答える 2

0

boost入力(文字列内)をチェックする関数を使用している場合、次のようになります。

static bool isCorrect( const std::string& value )
{
    try
    {
        boost::lexical_cast< double >( value ) ; /* this code only checks */
        return true ;
    }
    catch(...)
    {
        std::cerr << value << " argument is not double!" << std::endl ;
        return false ;
    }
}

他のライブラリを使用できない場合は、文字列を解析して、文字列に数字、オプションのドット、数字が含まれているかどうかを確認する必要があります。また、要件で E タイプ形式が必要な場合は、E と数字が続くかどうかを確認する必要があります。このためには、パーサーを作成する必要があり、それがあなたが受け取った実際の要件になります。この要件は、コードを提供するためではなく、パーサーを作成する方法を教えることを目的としているため、あなたに任せます。

于 2013-09-27T18:55:11.110 に答える