计算器的改良(洛谷-P1022)
生活随笔
收集整理的這篇文章主要介紹了
计算器的改良(洛谷-P1022)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目背景
NCL是一家專門從事計算器改良與升級的實驗室,最近該實驗室收到了某公司所委托的一個任務:需要在該公司某型號的計算器上加上解一元一次方程的功能。實驗室將這個任務交給了一個剛進入的新手ZL先生。
題目描述
為了很好的完成這個任務,ZL先生首先研究了一些一元一次方程的實例:
4+3x=8
6a-5+1=2-2a
-5+12y=0
ZL先生被主管告之,在計算器上鍵入的一個一元一次方程中,只包含整數、小寫字母及+、-、=這三個數學符號(當然,符號“-”既可作減號,也可作負號)。方程中并沒有括號,也沒有除號,方程中的字母表示未知數。
你可假設對鍵入的方程的正確性的判斷是由另一個程序員在做,或者說可認為鍵入的一元一次方程均為合法的,且有唯一實數解。
輸入輸出格式
輸入格式:
一個一元一次方程。
輸出格式:
解方程的結果(精確至小數點后三位)。
輸入輸出樣例
輸入樣例#1:
6a-5+1=2-2a
輸出樣例#1:
a=0.750
源代碼
#include<iostream> #include<iomanip> #include<cstdio> #include<cstring> using namespace std; int main() {char ch,unknown;int coefficient=0,sum=0;int current=0,flag=1,work=1,symbol=1;double result;ch=getchar();//讀入一個字符for(;;){if(ch>='a' && ch<='z')//當字符為字母時{unknown=ch;//記錄該字符if(current==0&&work)//當前數位為0時coefficient=coefficient+symbol*flag;//求系數else//當前數位不為0時{coefficient=coefficient+symbol*flag*current;//求系數current=0;flag=1;}}else if(ch>='0'&&ch<='9')//當字符為數字時{current=current*10+ch-'0';//記錄當前數位work=1; }else if(ch=='+')//當字符為加號時{sum=sum+(-symbol*flag*current);//累加數字和current=0;flag=1;work=0;}else if(ch=='-')//當字符為減號時{sum=sum+(-symbol*flag*current);//累加數字和current=0;flag=-1;work=0; }else if(ch=='=')//當字符為等號時{sum=sum+(-symbol*flag*current);//累加數字和current=0;flag=1;symbol=-symbol;//由于移位,取負work=0;}else//循環終止情況{sum=sum+(-symbol*flag*current);break;//終止循環}ch=getchar();//讀入一個字符}result=1.0*sum/coefficient;//數字和和除以系數cout<<setiosflags(ios::fixed)<<setprecision(3);cout<<unknown<<"="<<result<<endl;return 0; }?
總結
以上是生活随笔為你收集整理的计算器的改良(洛谷-P1022)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 信息学奥赛C++语言: 素数回文数的个数
- 下一篇: 矩阵加法(信息学奥赛一本通-T1124)