0

ファイルから1文字ずつデータを読み込んでいます。読み取りの最後に、値が実数か整数かを印刷できるようにする必要があります。

get()を使用してデータを読み込み、最初の部分がintegerQueueの場合、「。」の場合、2つの異なるキューに保存しました。が読み込まれ、残りのデータがrealQueueに切り替えられます。次に、それに応じて印刷します。

印刷に問題があります。すべてを整数にラベル付けし続けます:次に正しい値。

else if(isdigit(temp) || temp == '.')
    {
            integerQueue.push(temp);
            char temp2 = readFile.get();
            while(isdigit(temp2))
            {
                integerQueue.push(temp2);
                temp2 = readFile.get();
            }
            if( temp == '.')
            {
                realQueue.push(temp);
                temp2 = readFile.get();
                while(isdigit(temp2))
                    {
                        realQueue.push(temp2);
                        temp2 = readFile.get();
                    }
            }
            if(realQueue.empty())
            {
            writeFile <<"Integer:       ";
                while(!integerQueue.empty())
                {
                writeFile <<integerQueue.front();
                integerQueue.pop();
                }
            }
            else
            {
                writeFile<<"Real:       ";
                while(!integerQueue.empty())
                {
                writeFile <<integerQueue.front();
                integerQueue.pop();
                }
                while(!realQueue.empty())
                {
                writeFile <<realQueue.front();
                realQueue.pop();
                }
            }
4

1 に答える 1

1

10行目:if( temp == '.')-最後に読み取られた文字(および最終的にwhileループが中断される文字)ではなく、コードのこの部分に入る最初の文字を読み取っています。temp2がtempではなく'。'に等しいかどうかを確認する必要があります。

于 2012-09-30T22:37:00.330 に答える