以下のプログラムを提出しようとしているのですが、Time Limit Exceededとなってしまいます。
一応、オフラインで実行するかぎりではうまく動くのですが、上記のエラーではじかれる理由がよくわかりません。(制限時間のオーバーということなので、これよりもはやく動くコードがあるということだとは思うのですが。)
>|
#include<iostream>
using namespace std;
int main(){
int a,b;
char op;
int rst;
while(1){
cin >> a >> op >> b ;
if((op !='+') && (op !='-') && (op != '*') && (op != '/') && (op != '?')){
cout << "error!!" << "\n" ;
}
else{
switch(op){
case '+' :
rst = a+b ;
cout << rst << "\n" ;
break ;
case '-' :
rst = a-b ;
cout << rst << "\n" ;
break ;
case '*' :
rst = a*b ;
cout << rst << "\n" ;
break ;
case '/':
if(b!=0){
rst = a/b ;
cout << rst << "\n" ;
break ;
}
else{
cout << "error!!"<< "\n" ;
break ;
}
case '?' :
break ;
}
}
}
return 0 ;
}
>|
opが?の場合にbreakがswitchからの脱出でwhileからの脱出になっていないため読み込み待ちでタイムアウトなのでしょう。
opのifは必要ない(switchのdefaultでできる)ので
if (op == '?') break;
とすればopが?の場合、whileから脱出できます。
while (1)
は無限ループになりやすいので
do {
} while (op != '?')
の方がいいように思います