[問題] Boolean Tree
( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 )
( 未必需要依照此格式,文章條理清楚即可 )
遇到的問題: (題意請描述清楚)
我正在寫一個Boolean Tree, 跟Binary Tree差不多, 只是我把Leaf都改成Bool, 比如說
&, |, ~ 代表的是我的Operation
T, F, 其他字母 代表著我的True, 跟False, 其他字母比如說X, Y到後面程序會說
"請輸入X跟Y他們的Bool, 也就是T, Or F"
然後做出Tree的時候, 先把一串東西放進去
比如說
TX|F~&
我的樹會變成
&
/ \
| ~
/ \ \
T X F
然後運用Recursion把X找出來, 這裡我會, 可是重點是程序怪怪的
他會想要更改所有的字母, 就算我寫了一個if statement
希望得到的正確結果:
只更改X
程式跑出來的錯誤結果:
全部一起更改
如果用Postfix看的話
全部選F就會變成
outputting postfix
FFFFFFFF
應該是
TF|F~&
而不是
FFFFFF
開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux)
C++
有問題的code: (請善用置底文標色功能)
template <class Object>
void operatorSymbolChange(Node<Object>* Node)
{
if( Node->left != NULL ) //Left
operatorSymbolChange(Node->left);
if( Node->right != NULL ) //Right
operatorSymbolChange(Node->right);
cout << "Currently in " << Node->element << endl;
Object temp = Node->element;
if ((temp != '&') || (temp != '|') || (temp != '~') || (temp != 'F') ||
(temp != 'T'))
{
Object userInput;
cout << "The element " << Node->element << endl;
cout << "Is a symbol, you would need to change it to << endl;
cout << "either T or F" << endl;
cin >> userInput;
int count = 1;
int tempCount = 0;
while (count!=tempCount)
{
if ((userInput == 'T') || (userInput == 'F'))
{
Node->element = userInput;
tempCount++;
}
else
{
cout << "You did not either enter T or F;
cin >> userInput;
}
}
}
else
{
cout << "The item " << Node->element << " is fine" << endl;
}
}
補充說明:
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 173.56.121.140
推
11/13 13:14, , 1F
11/13 13:14, 1F
→
11/13 13:24, , 2F
11/13 13:24, 2F
→
11/13 13:25, , 3F
11/13 13:25, 3F
→
11/13 13:26, , 4F
11/13 13:26, 4F
→
11/13 15:35, , 5F
11/13 15:35, 5F
→
11/13 15:35, , 6F
11/13 15:35, 6F
推
11/13 17:54, , 7F
11/13 17:54, 7F
→
11/13 18:04, , 8F
11/13 18:04, 8F
→
11/13 23:19, , 9F
11/13 23:19, 9F
→
11/13 23:19, , 10F
11/13 23:19, 10F