按特定顺序打印队列

时间:2012-10-05 07:15:28

标签: c++ queue

  

可能重复:
  outputting queues in correct order

我有两个包含数字的队列,in​​tegerQueue只包含整数,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();
    }
}

1 个答案:

答案 0 :(得分:1)

如果我理解正确,integerQueue包含'。'前面的数字,realQueue包含'。'后的数字,如果有的话。
因此,如果您在realQueue中找到任何内容,则会有实数,否则为整数。

正确?

在这种情况下,您甚至不需要知道currentState
只需打印整数部分

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

然后,如果你也有一个真实的部分,请在整数部分后面打印:

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