0

重複の可能性:
キューを正しい順序で出力する

数字を含む 2 つのキューがあり、integerQueue には整数のみが含まれ、realQueue には先頭の '.' が含まれます。次に、次の数字。

整数のみが読み込まれた場合は整数キューを出力する必要がありますが、realqueue にデータが含まれている場合は、前半の integerqueu を出力してから後半の realqueu を出力して、123.234 のような実数を作成する必要があります。

現在、私のコードは実数 1 を出力します。その後、整数を出力します: 2342343

正しい出力が表示されるようにするにはどうすればよいですか?

//if the realQueue is empty, then we just read in an integer, currentState must be 1, in order to print integer
if(realQueue.empty() || currentState == '1')//implementation of the FSM
{
    writeFile <<"Integer:       ";
    while(!integerQueue.empty())
    {
        writeFile <<integerQueue.front();
        integerQueue.pop();
    }
}
//since the realQueue has values in it, then it must bea real Number
else
{
    //currentState = '2';
    // currentState must be == '2', since we have a real number to print

    writeFile<<"Real:           ";
    //currentState has to be in real mode for it to print out to file
    /*while(!integerQueue.empty() && currentState == '2')
    {
        writeFile <<integerQueue.front();
        integerQueue.pop();
    }*/
    // currentState has to be in real mode for it to print out to file
    while(!realQueue.empty() && currentState == '2' && !integerQueue.empty())
    {
        writeFile <<integerQueue.front()<<realQueue.front();

        integerQueue.pop();
        realQueue.pop();
    }
}
4

1 に答える 1

1

私の理解が正しければ、integerQueueには「.」の前の数字が含まれており、realQueue「.」の後の数字も含まれています。
したがって、 に何かが見つかった場合realQueueは実数であり、それ以外の場合は整数です。

正しい?

その場合、 を知る必要さえありませんcurrentState:
整数部分を出力するだけです

while( !integerQueue.empty() ) {
    writeFile << integerQueue.front();
    integerQueue.pop();
}

次に、実数部もある場合は、整数部のすぐ後ろに出力します。

while( !realQueue.empty() ) {
    writeFile << realQueue.front();
    realQueue.pop();
}
于 2012-10-05T08:30:06.623 に答える