前提・実現したいこと
APG4bで https://atcoder.jp/contests/apg4b/tasks/APG4b_ck の課題に挑戦しています。URLから内容は確認できると思いますが、一応概要を述べておくと、 1+1+1-1 のような複数の足し算、引き算によって構成される列が入力され、その計算結果を出力するプログラムです。
そこで変数を用いた計算を行ったところ、本来、その変数に入るはずがない数字が出力されました。入るはずがない数字とは、計算過程で出てくるものでなく、なおかつ入力されていない数字になります。
なお、学習のため一桁の数字ならばどのような数字でも計算可能なものにしたいと考えています。また、デバックのため途中の計算を出力するようにしています。
発生している問題・エラーメッセージ
実際の入出力例です。 入力:1+1 出力:一文字目は49です。 49+2=98 98
該当のソースコード
using namespace std; int main() { string S; cin >> S; int i ; int x ; x = 0; for (i = 0; i < S.size() ; i+=2){ if (i == 0){ x += S.at(i) ; cout << "一文字目は" << x <<"です。" << endl; }else{ if (S.at(i-1) == '+'){ cout << x; x += S.at(i) ; cout << S.at(i-1)<< i << '=' << x <<endl; } if (S.at(i-1) == '-'){ x -= S.at(i) ; cout << S.at(i-1)<< i << '=' << x <<endl; } if (S.at (i-1)== !'+' || !'-'){ cout << "error" << endl; break; } } } cout << x; }
試したこと
どこで数字がおかしくなっているのかを確認するため、細かく変数の中身を出力するようにしましたが、結局、原因の特定はできませんでした。
補足情報(FW/ツールのバージョンなど)
上記URL上のコードテスト機能を用いています。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。