HHU 1002: 弟弟的作業(字串+模擬)
阿新 • • 發佈:2019-01-28
題目描述
你的弟弟剛做完了“100以內數的加減法”這部分的作業,請你幫他檢查一下。每道題目(包括弟弟的答案)的格式為a+b=c或者a-b=c,其中a和b是作業中給出的,均為不超過100的非負整數;c是弟弟算出的答案,可能是不超過200的非負整數,也可能是單個字元"?",表示他不會算。
輸入
輸入檔案包含不超過100行,以檔案結束符結尾。每行包含一道題目,格式保證符合上述規定,且不包含任何空白字元。輸入的所有整數均不含前導0。
輸出
輸出僅一行,包含一個非負整數,即弟弟答對的題目數量。
樣例輸入
1+2=33-1=56+7=?99-0=99
樣例輸出
2
提示
來源
簡單模擬即可
#include <iostream> #include <cstring> #include <cstdio> using namespace std; int main() { //freopen("input.txt","r",stdin); string str; int counter=0; while(cin>>str) { int a=0; int b=0; int c=0; int p=0; int miner=0; int flag=0; for(int i=0;i<str.size();i++) { char temp=str[i]; if(temp!='+'&&temp!='-') { temp-='0'; a=a*10+temp; } else { if(temp=='+') flag=1; else flag=0; p=i; break; } } p++; for(int i=p;i<str.size();i++) { char temp=str[i]; if(temp!='=') { temp-='0'; b=b*10+temp; } else { p=i; break; } } p++; if(str[p]=='?') continue; if(str[p]=='-') {miner=1; p++;} for(int i=p;i<str.size();i++) { char temp=str[i]; temp-='0'; c=c*10+temp; } if(miner) c=-1*c; //cout<<a<<" "<<flag<<" "<<b<<" "<<c<<endl; if((flag&&a+b==c)||(!flag&&a-b==c)) counter++; } printf("%d\n",counter); return 0; }