看板 C_and_CPP 關於我們 聯絡資訊
( *[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
snowlike:第三個if的邏輯是錯的 11/13 13:14
BlackMatrix:請問一下為什麼阿? 11/13 13:24
BlackMatrix:放兩個recursion是為了讓他已Postfix跑 11/13 13:25
BlackMatrix:if statement是讓他測試我的字母到底是不是XYZ等等.. 11/13 13:26
BlackMatrix:正確的if statement 應該是 11/13 15:35
BlackMatrix:if (node->type == "operandSymbolType") 11/13 15:35
snowlike:'&'在第二個條件式進入if,其它符號在第一個條件就進入if 11/13 17:54
snowlike:沒看到回文@_@其實更換成&&就可以 11/13 18:04
BlackMatrix:喔~~~~~原來是這樣, 害我想了老半天還得加個Type 11/13 23:19
BlackMatrix:謝謝~~ 11/13 23:19