-2

最初の数字: a、b、c の 3 つの数字です。

タスク: 次の場合にのみ TRUE (画面に 1 が表示される) となる論理式を作成します。

a) すべての変数 (a、b、c) の意味は同じです。
b) すべての変数 (a、b、c) の意味は同じではありません (それらはすべて異なります)。
c) 3 つの変数のうち 2 つの意味は同じです。
d) すべての変数 (a、b、c) は偶数です。
e) 3 つの変数の意味はすべて正ですが、100 を超えません。

これは私が a) タスクを書いた方法です:

int main() 
{

    int n;
    unsigned int a, b, c;

    cout << "Write three numbers: " << endl;
    cout << "First: " << endl;
    cin >> a;
    cout << "Second: " << endl;
    cin >> b;
    cout << "Third: " << endl;
    cin >> c;

    {
    for (a=1, b=2, c=3; a,b,c>0; a++, b++, c++);
    }

    n=a||b||c;
    cout << n << endl;

    return 0;
}

それは機能しません。私はいくつかの間違いを犯したと確信しています。

4

2 に答える 2

4

このループには多くの問題があります。

for (a=1, b=2, c=3; a,b,c>0; a++, b++, c++);

まず、ループの最後にセミコロンがあることに注意してください。これは、ループが無効であることを意味します。と同等です

for (a=1, b=2, c=3; a,b,c>0; a++, b++, c++) {
     // Do nothing
}

次に、あなたの条件は

a, b, c > 0

これは、「a、b、および c が 0 より大きい」という意味ではありません。代わりに、カンマ演算子を使用します。これは、「これらの式をすべて評価しますが、最後の式以外の値はすべて破棄する」ことを意味します。したがって、それは

for (a=1, b=2, c=3; c > 0; a++, b++, c++) {
     // Do nothing
}

最後に、このループでインクリメント していることに注意してください。これは、ループがオーバーフローcするまで実行し続けることを意味します。c

aさらに奇妙なのは、ユーザーから、b、およびの値を読み取っているのにc、ループ内ですぐにそれらを上書きしていることです。それはあなたが意図したものですか?

あなたがここで何をしようとしているのかはわかりませんが、これはおそらくプログラムが何をしているのかを説明しているはずです

お役に立てれば!

于 2013-10-30T20:28:54.120 に答える
2

これは課題のように見えるので、いくつか提案します。

指摘したようtemplatetypedefに、C++ 構文を少し理解するために戻る必要があります。

しかし、あなたが自分のやりたいことを明確にしているかどうかはわかりません。そこにループがあるという事実はヒントです。

必要なことを疑似コードで書き出すことをお勧めします。論理と手順を示す平易な英語のステートメントだけです。

パート a) でこれを行います。このようなもの:

Accept user input for three values
If all three values are the same
    Return true
Otherwise
    Return false

これを見て、a)の部分にループが必要ですか?おそらくそうではありません。

むしろこういうことなのかな。

if (a == b && b == c) // if all values are the same

お役に立てれば。

于 2013-10-30T20:38:29.553 に答える