2013-10-30 17 views
-2

初始數字:即三個 - a,b和c。寫出等於TRUE的邏輯表達式

任務:寫一個邏輯表達式,將等於TRUE(將在屏幕中顯示1),那麼也只有這樣時:

A)所有的變量 - A,B,C - 的含義是一樣。
b)所有變量 - a,b,c - 含義不一樣(它們都是不同的)。
c)三個變量含義中的兩個含義相同。
d)所有變量 - a,b,c - 都是偶數。
E)的所有三個變量的含義是積極的,但不大於100

這是我寫的一個)任務:

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; 
} 

它不工作,我相信我犯了一些錯誤。

+3

很難說出你想用所有代碼實現的目標。坦率地說,在我看來你是隨機扔東西的。相信我,那永遠不會奏效。在編碼之前考慮一下。 – kviiri

+2

這個問題似乎是題外話題,因爲它是關於理解給定的作業。 –

回答

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 

希望這會有所幫助。

+0

感謝@約翰, 想到這一點是這樣的: INT主() { INT N; unsigned int a,b,c; cout <<「寫一個數字:」<< endl; cin >> a; a = b = c; if(a == b && b == c); n =(a == b)&&(b == c); cout << n << endl; return 0; } 它現在的作品! – ReS

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

什麼是weirder是,您正在從用戶讀取a,bc的值,但之後立即在循環中覆蓋它們。這是你的意圖嗎?

我不知道你打算在這裏做,但是這或許應該解釋一下什麼是程序做的,從中你也許能夠了解爲什麼它不是做你希望它能做到。

希望這會有所幫助!