[問題] Boolean Tree

看板C_and_CPP作者 (BlackMatrix)時間16年前 (2009/11/13 12:18), 編輯推噓2(208)
留言10則, 2人參與, 最新討論串1/1
( *[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
第三個if的邏輯是錯的
11/13 13:14, 1F

11/13 13:24, , 2F
請問一下為什麼阿?
11/13 13:24, 2F

11/13 13:25, , 3F
放兩個recursion是為了讓他已Postfix跑
11/13 13:25, 3F

11/13 13:26, , 4F
if statement是讓他測試我的字母到底是不是XYZ等等..
11/13 13:26, 4F

11/13 15:35, , 5F
正確的if statement 應該是
11/13 15:35, 5F

11/13 15:35, , 6F
if (node->type == "operandSymbolType")
11/13 15:35, 6F

11/13 17:54, , 7F
'&'在第二個條件式進入if,其它符號在第一個條件就進入if
11/13 17:54, 7F

11/13 18:04, , 8F
沒看到回文@_@其實更換成&&就可以
11/13 18:04, 8F

11/13 23:19, , 9F
喔~~~~~原來是這樣, 害我想了老半天還得加個Type
11/13 23:19, 9F

11/13 23:19, , 10F
謝謝~~
11/13 23:19, 10F
文章代碼(AID): #1A_Du6uv (C_and_CPP)