匿名質問者
匿名質問者匿名質問者とは「匿名質問」を利用して質問した質問者。
「匿名質問」では、ユーザー名を公開せずに匿名の質問ができます。
詳しくはこちら

AOJの問題を解いています。

以下のプログラムを提出しようとしているのですが、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 ;
}
>|

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2014/05/21 20:45:15
  • 終了:2014/05/28 20:50:04

回答(1件)

匿名回答1号 No.1

匿名回答1号「匿名質問」を利用した質問に回答すると「匿名回答○号」と匿名で表示されます。
「匿名質問」では、ユーザー名を公開せずに匿名の質問ができます。
詳しくはこちら
2014/05/22 11:12:35

opが?の場合にbreakがswitchからの脱出でwhileからの脱出になっていないため読み込み待ちでタイムアウトなのでしょう。
opのifは必要ない(switchのdefaultでできる)ので
if (op == '?') break;
とすればopが?の場合、whileから脱出できます。

while (1)
は無限ループになりやすいので
do {
} while (op != '?')
の方がいいように思います

匿名質問者

お返事が遅くなってしまい大変申し訳ありません。
無事解決しました!ありがとうございます!

2014/05/26 23:05:45

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません