回覆列表
-
1 # 影片好笑
-
2 # 王小佳的慧慧
輸入輸出樣例裡面的分號 ,不確定是真會輸出,還是隻是分隔輸入輸出。常見的應該沒有分號。輸入1+i 2輸出3+i這個程式, 麻煩在於如何將輸入的資料,轉為複數。可以先將輸入 存為兩個字串,對每個字串進行解析,轉為複數。對於每個字串,先查詢是否存在i,這個很簡單,如果有,那麼一定是最後一個。如果不存在i,那麼虛部為0,將字串轉為實部即可。如果存在i,那麼查詢是否存在+或者-,如果不存在,說明沒有實部,實部設定為0如果存在只有-, 同時-為字串第一個元素, 那麼一樣沒有實部。如果存在+,或者存在不是首元素的-,說明同時有實部和虛部,區分兩部分,分別轉換。 轉換後,得到複數,簡單的相加,得到結果。輸出時,一樣要判斷實部,虛部是否為0,然後再根據複數規則輸出。 這部分相對要簡單的多了。
這個是一個列子,可以參考下struct complex{ float rmz; //實部 float lmz;//虛部}; //產生一個複數. complex getAComplex(float a,float b){ complex Node=new complex(); Node.rmz=a;Node.lmz=b; return Node;} //兩個複數求和 complex addComplex(complex complex1,complex complex2) { complex Node=new complex(); Node.rmz=complex1.rmz+complex2.rmz; Node.lmz=complex1.lmz+complex2.lmz; return Node; } //求兩個複數的差 complex subComplex(complex complex1,complex complex2) { complex Node=new complex(); Node.rmz=complex1.rmz-complex2.rmz; Node.lmz=complex1.lmz-complex2.lmz; return Node; } //求兩個複數的積 complex productComplex(complex complex1,complex complex2) { complex Node=new complex(); Node.rmz=complex1.rmz*complex2.rmz-complex1.lmz*complex2.lmz; Node.lmz=complex1.lmz*complex2.rmz+complex2.lmz*complex2.rmz; return Node; } //求實部 float getComplexRmz(complex complex1) { return complex1.rmz; } //求虛部 float getComplexLmz(complex complex1) { return complex1.lmz; }