1

次のコードでは、複数の入力を取り、(最後の文字などの) 計算を行い、最後に出力してから、5 回まで入力することは可能ですか?

#include <iostream>
using namespace std;
int main ()
{
    char name;
    int i=0;
    while(i != 5){

        while(!(name != '<' || name != '>')){
            cin>>name;
            //do some calculation with the inputs
            //cout<<name;
        }
        i++;
        cout<<name;
        //print the result of calculation this loop
    }
}

何らかの理由で、string、 またはarray、 またはbreak、および 以外のライブラリを使用することは許可されていませんiostream。ループを使用することは可能ですか? 代替手段は何ですか?

編集::上記のコードでは、最後の入力が何であったかを判断したいと思います。入力するとasdf>、 が表示されます>>>>>。印刷>してループに戻り、別のショットを求めてもらいたい.

4

3 に答える 3

2

解決策は、この行の直前に名前変数をリセットすることです。

while (!(name != '<' || name != '>')) {

あなたがする必要があるのはこれです:

name = 0;

また、最初のwhileループに入る前に変数を初期化することをお勧めします。

'\0'編集:または、の代わりに 使用できます0。ただし、内部的には違いはありません。このコードは、ほとんどの経験の浅いユーザーにとってのみ意味があります。

于 2013-03-19T16:53:54.943 に答える
2

インナーがwhile終了した後、またはのいずれかnameが保持され、インナーが次に遭遇する前にリセットされません。インナーは、またはのいずれかであるため、すぐに終了します。内部またはわずかな再構築の前にリセットするだけです。<>whilename<>namewhile

while (cin >> name && !(name != '<' || name != '>'))
{
}
于 2013-03-19T16:54:31.850 に答える
1

文字へのポインターを作成したいようです。これは、実際には配列でなくても配列のように動作#include <iostream>し、入力と出力以外には何も必要としません。

char* name;

文字のベクトルを使用することもできますが、これは長い道のりであり、「<iostream>ルール以外は何もない:

#include <vector>
#include <iostream>

using namespace std;

vector<char> CharVec;
vector<char>::iterator it;

int main ()
{
    char input;
    int i=0;
    while(i != 5){
        if(input != '<'){ //this should be if, not while
            CharVec.push_back(input);
        }
        i++;
    }
    //move print to outside the character entering loop
    it = CharVec.begin();
    while(it != CharVec.end())
    {
        cout << *it;
        it++;
    }

}

于 2013-03-19T16:51:06.633 に答える