我需要編寫一個函數,它需要一個整數(它表示真值表中的一行)和一個布爾數組,它存儲真值表的那一行的值。檢索具有非常數變量的真值表的單行
下面是一個例子真值表
Row| A | B | C |
1 | T | T | T |
2 | T | T | F |
3 | T | F | T |
4 | T | F | F |
5 | F | T | T |
6 | F | T | F |
7 | F | F | T |
8 | F | F | F |
請注意,一個給定的真值表可能比此表更多或更少的行,因爲可能的變量的數目可以改變。
函數原型可能看起來像這樣
getRow(int rowNum, bool boolArr[]);
如果調用此函數,例如,作爲
getRow(3, boolArr[])
它需要包含下列元素返回數組
|1|0|1| (or |T|F|T|)
對我來說難度的增加是因爲變量的數量可能會發生變化,所以我增加或減少行數。例如,變量列表可以是A,B,C,D,E和F,而不是A,B和C.
我認爲最好的解決方案是編寫一個循環,行號,並基本上改變了數組的元素,就像它在二進制中計數一樣。這樣
1st loop iteration, array elements are 0|0|...|0|1|
2nd loop iteration, array elements are 0|0|...|1|0|
我不能爲我的生活弄清楚如何做到這一點,並不能在網絡上其他地方找到一個解決方案。對不起,所有的困惑,並感謝您的幫助
哪裏公式本身發揮作用嗎?目標是找出單個變量分配對於表的給定行,或者如何解析公式以評估? – templatetypedef 2015-01-21 03:56:44
@templatetypedef最終目標是解析具有任意數量變量的每個可能的真值的公式。實質上,檢查真值表的每一行以查看它是否滿足公式。這就是爲什麼能夠分別生成真值表的每一行非常重要的原因。例如,如果a,b和c是變量,我需要檢查三者的真假組合,看看哪些組合導致整個公式爲真。 – FutureShocked 2015-01-21 04:04:12
請嘗試改善問題陳述。你提到'genTruth'而不解釋函數應該計算什麼,然後跳到bitshifts。如果你首先明確說明問題並解釋你的方法,這將有助於你的解釋。 – Pradhan 2015-01-21 04:47:50