我有两个包含数字的队列,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();
}
}
答案 0 :(得分:1)
如果我理解正确,integerQueue
包含'。'前面的数字,realQueue
包含'。'后的数字,如果有的话。
因此,如果您在realQueue
中找到任何内容,则会有实数,否则为整数。
正确?
在这种情况下,您甚至不需要知道currentState
:
只需打印整数部分
while( !integerQueue.empty() ) {
writeFile << integerQueue.front();
integerQueue.pop();
}
然后,如果你也有一个真实的部分,请在整数部分后面打印:
while( !realQueue.empty() ) {
writeFile << realQueue.front();
realQueue.pop();
}