在codevs上遇到乙個挺新穎的題目,設計演算法解一元一次方程。
ncl是一家專門從事計算器改良與公升級的實驗室,最近該實驗室收到了某公司所委託的乙個任務:需要在該公司某型號的計算器上加上解一元一次方程的功能。實驗室將這個任務交給了乙個剛進入的新手zl先生。為了很好的完成這個任務,zl先生首先研究了一些一元一次方程的例項:
4+3x=8
6a-5+1=2-2a
-5+12y=0
zl先生被主管告之,在計算器上鍵入的乙個一元一次方程中,只包含整數、小寫字母及+、-、=這三個數學符號(當然,符號「─」既可作減號,也可作負號)。方程中並沒有括號,也沒有除號,方程中的字母表示未知數。
編寫程式,解輸入的一元一次方程, 將解方程的結果(精確至小數點後三位)輸出至螢幕。
你可假設對鍵入的方程的正確性的判斷是由另乙個程式設計師在做,或者說可認為鍵入的一元一次方程均為合法的,且有唯一實數解。
輸入描述 input description
乙個一元一次方程
輸出描述 output description
方程的解
樣例輸入 sample input
6a-5+1=2-2a
樣例輸出 sample output
a=0.750
#include #define m 200
int main(void)
else if(stmp>='a'&&stmp<='z')
}else if(stmp=='+'||stmp=='-')
else
type = 1;
ntmp=0;
ntype = (stmp=='+'?1:-1);
} else if(stmp=='=')
else
type = 1;
ntmp=0;
ntype = 1;
local = -1;
} }if(type)
else
result = -(double)snum/(double)salphabet;
printf("%c=%-.3lf\n",alpha,result);
return 0;
}
宣告的變數有些多,但功能都簡單,大部分用於判斷,主要實現是用一次迴圈遍歷加上一些if判斷,思路簡單,但if判斷要考慮的條件要充分。 計算器的改良
2000年分割槽聯賽普級組之一 計算器的改良 time limit 1000ms memory limit 65536k total submit 179 accepted 75 description ncl是一家專門從事計算器改良與公升級的實驗室,最近該實驗室收到了某公司所委託的乙個任務 需要在...
1015 計算器的改良
題目描述 description ncl是一家專門從事計算器改良與公升級的實驗室,最近該實驗室收到了某公司所委託的乙個任務 需要在該公司某型號的計算器上加上解一元一次方程的功能。實驗室將這個任務交給了乙個剛進入的新手zl先生。為了很好的完成這個任務,zl先生首先研究了一些一元一次方程的例項 4 3x...
1015 計算器的改良
ncl是一家專門從事計算器改良與公升級的實驗室,最近該實驗室收到了某公司所委託的乙個任務 需要在該公司某型號的計算器上加上解一元一次方程的功能。實驗室將這個任務交給了乙個剛進入的新手zl先生。為了很好的完成這個任務,zl先生首先研究了一些一元一次方程的例項 4 3x 8 6a 5 1 2 2a 5 ...