人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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/1件

▽最新の回答へ

1 ● 匿名回答1号

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

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


匿名質問者さんのコメント
お返事が遅くなってしまい大変申し訳ありません。 無事解決しました!ありがとうございます!
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ