2012-02-19 92 views
-2

當我嘗試運行輸出中有問題的代碼。如何解決這個C代碼?

當輸入s = 1,m = 1時,能輸出太陽能和主電源接觸器。

當兩個輸入均爲0,即S = 0和m = 0,則它給 「沒有功率」。(正確的輸出)

當s = 1時,m = 0時,應該說「有沒有力量「。並能夠得到正確的輸出。

當s = 0時,m = 1,應該說「沒有電力」,而是繼續到太陽能接觸器信息(不是正確的輸出)。

那麼,有什麼可以解決我的問題嗎?一個錯誤的

#include<stdio.h> 
#include<stdbool.h> 
#define TRUE 1 
#define FALSE 0 

int main() 
{ 
    bool s, m; //input parameters 
    bool a, b; 
    bool p, q; 
    bool t; //output parameters   

    printf("Enter the value of solar VMD : \n"); //scanning vmd values of solar 
    scanf("%d", &s); 
    printf("Enter the value of Mains VMD : \n"); //scanning vmd values of Mains 
    scanf("%d", &m);  

    if(s == 1,m == 1)    
    {     
     printf("Scan solar contactor : \n"); //scanning solar contactor 
     scanf("%d", &a); 
     printf("Scan Mains contactor : \n"); //scanning mains contactor 
     scanf("%d", &b); 

     if(a == 1, b == 1) //when solar & mains contactor are close 
     { 
      q = FALSE; 
      p = TRUE; 
      printf("Solar contactor and Mains contactor: %d %d", p, q); 
     } 
     else if(a == 0, b == 1) //when solar contctor is open and mains is closed 
     { 
      q = FALSE; 
      p = TRUE; 
      printf("Solar contactor and Mains contactor: %d %d", p, q); 
     } 
     else if(a == 1, b == 0) //when solar contactor is closed and mains is open 
     { 
      q = FALSE; 
      p = TRUE; 
      printf("Solar contactor and Mains contactor: %d %d", p, q); 
     }  
     else if(a == 0, b == 0) //when both solar and mains are open      
     { 
      q = FALSE; 
      p = TRUE; 
      printf("Solar contactor and Mains contactor: %d %d", p, q); 
     } 
     else 
     { 
      printf("Problem with contactors"); 
     } 
    } 

    else 
    { 
     printf("There is no power"); 
    }  

    getchar(); 
    getchar(); 
    return 0; 
} 
+1

您是否可以真正格式化代碼以便讀取它? – 2012-02-19 06:36:46

+0

除了格式化之外,你能否給你的問題一個標題,它實際上告訴我們關於你所問的問題的一些問題? 「如何用C代碼解決這個問題」可能與任何事情有關。 – Bart 2012-02-19 06:41:14

回答

3
if(s == 1,m == 1) 

此代碼不會做你認爲它確實。瞭解operators of the C language,特別是logical operatorsthe comma operator

更新

另一個錯誤是,%d不會與bool工作。其實沒有scanf格式。所以你必須堅持int(這是一個完美的布爾運算符類型),或者編寫自己的函數來從流中讀取bool

+0

是的,我曾嘗試使用邏輯的實現,但輸出是「沒有權力」的所有可能的4例。 這是不可取的。 – lokesh 2012-02-19 06:42:54

+0

然後檢查你的輸入和你的邏輯。 – Bart 2012-02-19 06:45:23

+0

布拉特,我給輸入值或者邏輯1或者0. 所以確定輸入不是問題。 – lokesh 2012-02-19 06:50:03

0

一個例子如下:

if(s == 1,m == 1)    

取而代之的是,你可能想

if (s == 1 && m == 1) 
+0

是的,我做了&&功能, 但輸出是「沒有權力」的所有情況下(1,1),(1,0),(0,1),(0,0)。 這是不正確的。 – lokesh 2012-02-19 06:38:42

0
**Instead of:**    **put:** 
    if(s == 1,m == 1)  - if(s == 1 && m == 1) 
    if(a == 1,b == 1)  - if(a == 1 && b == 1) 
    else if(a == 0, b == 1) - else if(a == 0 && b == 1) 
    else if(a == 1, b == 0) - else if(a == 1 && b == 0) 
    else if(a == 0, b == 0) - else if(a == 0 && b == 0) 

邏輯運算符& &和||在評估兩個表達式以獲得單個關係結果時使用。運算符& &對應於布爾邏輯運算AND。如果兩個操作數都爲真,則此操作結果爲true;否則爲false。下面面板顯示操作符的結果& &計算表達式一個& & B:

a  b  a && b 
true true true 
true false false 
false true false 
false false false 
+0

Thx回覆發表ddacot, 如果你真的不介意,你可以使用邏輯運算符編譯並運行代碼。 而且,這是我以前做過的,分配了另一個布爾變量t, t = s && m,那麼我已經去了,如果(t == 1){執行}。 但結果是所有情況下「沒有力量」。 – lokesh 2012-02-19 06:48:27

0

如果(一個或多個== 1,米== 1)
這是錯誤 你需要WIRTE

如果(S == 1 & &米== 1)

& &此operato r檢查是否s == 1和m == 1 如果是,則條件爲true或轉到elseif塊