這是我自己寫的c++程式設計
請問能不能幫我增加一點內容!
讓他豐富一點!有更多功能!
讓我學習一下!感激!
#include
#include
using namespace std;
int main(int argc, char *argv[])
{
float x,y,z;
char op,next;
cout<<\"Do you want to calculate? y or n to stop\\n\";
cin>>next;
while( next==\'y\'){
cout<<\"input two numbers \\n\";
cin>>x>>y;
cout<<\"input operator +,-,*,/,\";
cin>>op;
switch( op ) {
case\'+\':
z = x + y;
cout<<\"x + y = \"<
case\'-\':
z = x- y;
cout<<\"x - y = \"<
case\'*\':
z = x * y;
cout<<\"x * y = \"<
case\'/\':
z = x / y;
cout<<\"x / y = \"<
default:
cout<<\"unknown operator\\n\";
}
cout<<\"do you want to calculate ? n or N to stop\\n\";
cin>>next;
}
system(\"PAUSE\");
return EXIT_SUCCESS;
}
2006-08-03 19:14:20 · 3 個解答 · 發問者 doobiest 1 in 電腦與網際網路 ➔ 程式設計
不好意思耶.可不可以直接po程式碼?這樣我可能比較容易看懂!謝謝您這麼用心的回答!感激!
2006-08-04 17:53:35 · update #1
計算機的程式有很多發展的東西啊,
1. 試著加入其他的2元運算子,如找餘數,power,等的運算子…
2. "記憶功能",例:x 的值是來自上一次運算的值
3. 直接 parse 的功能,例:使用者只要打 "3 + 5" 就會幫你算答案,不用一步一步來
4. 有了 parse 的功能,還可以再加支援 3 個或以上的運算子的功能,例: "3 + 2 - 1"
5. 可以再加入運算子 precedence 的功能,例:"3 + 2 *4" 會先算 2* 4
6. 有precedence 當然也要有括號的功能,例:"( 3 + 2 ) * 4"
7. 最後,可以加入 grammar checking 的功能,例:可以這樣寫: "(3+2)*4" 數字之間不需要有空格(有空格也ok),而"(3+2*4"會告訴你是 error,而"(3+2)*A"也會是error
還很多啦,這些只是一些隨便想一想就有的點見… (應該就可以作很久了)
2006-08-04 10:52:44 補充:
自已想了想,最後一個自已現在好像也不會作,呵…
2006-08-04 18:44:32 補充:
呵,對啊,post完了,自已還想了滿久要怎麼作,還去翻了翻很久沒碰compiler課本…
2006-08-05 17:17:17 補充:
main(){ char line[1024]; char sep[] = " \r\n\t"; char* tok; char* op; int ans = 0;
2006-08-05 17:17:41 補充:
while(1) { cout<<"Enter an expression, empty line to stop:" << endl; cin.getline( line, 1024 ); // 讀入一行字串 if( strlen(line) == 0 ) break; // 空的一行就結束 tok = strtok(line, sep); // 用空白當 token sep,找 token
2006-08-05 17:18:21 補充:
if( tok[0] - '0' <= 9 && tok[0] - '0' >=0 ) // 要是第一個 token 不是數字,用舊的 ans 當第一個數字 { ans = atoi(tok); op = strtok(0, sep); } else op = tok; // 不然的話,第一個 token 就是運算子
2006-08-05 17:18:51 補充:
do { int number = atoi( strtok(0, sep) ); // 運算子完就是第2個數字,讀取它 switch( op[0] ) // 看我們要對這個數字作什麼運算 +,-,*,/,%,^ { case '+': ans += number; break; case '-': ans -= number; break; case '*': ans *= number; break;
2006-08-05 17:19:20 補充:
case '/': ans /= number; break; case '%': ans %= number; break; case '^': if( number == 0 ) ans = 1; else if(number <0 ) ans = 0; else { int t = ans; for( int i=1; i
2006-08-05 17:19:31 補充:
} while(op = strtok(0, sep )); // 讀下一個運算子,要是沒運算子了,就結束 cout << "Ans: " << ans << endl; // 輸出答案 } }
2006-08-05 17:21:16 補充:
========只有加到我說的第4點功能,而且完全沒有 error check你可以輸入 "3 + 2 * 2 / 2"來算答案,中間都要有空白…也可以打 "+ 3 / 2",來把上一次運算的答案當第一個數字
2006-08-04 04:15:37 · answer #1 · answered by Dave 7 · 0⤊ 0⤋
就怕你們講的那些,發問者會滿腦疑問。
2006-08-04 17:25:15 · answer #2 · answered by Almond 6 · 0⤊ 0⤋
To dave 的補充
修過 compiler 就會做了!
不過,也是不太容易做就是了!
2006-08-04 10:33:08 · answer #3 · answered by ? 7 · 0⤊ 0⤋