ファイルの数値を読み込み、足すのですが、自動チェックで2回目のテストがパスできません。1回目は、パスできました。コードで間違っているところはありますか?
#include <fstream> using namespace std; int main() { int num = 0; int sum = 0; ifstream f("luvut.txt"); w if (f.is_open()) { f >> num; while (f >> num) { ++num; sum += num; } cout<<"合計 "<<sum<<endl; } else { cout << "ファイルが開きませんでした!" << endl; exit(-1); } }
sumが宣言されていなくてそもそもコンパイルが通りませんよ
1つ目のnumは読み捨てていて、2つ目以降はインクリメントしてから加算しようとしているようですが
>ファイルの数値を読み込み、足す
とはどういう仕様なのでしょうか?
始めの宣言の変更を忘れていました。機械での自動チェックなので、ファイルにどんな数値が入っているかはわかりません。1回目のチェックはパスできましたが、2回目で、私のコードの結果が7で、正解は6でした。ファイルに数字が入っており、それを読み込んでから、合算します。
SHOMIさんの言うことの繰り返しになると思いますが、
一行目の値を加算していませんが、1行目の数字は足さずに無視すると言うことであっていますか?
あと、++num;としてからsum+=numとすると、元のファイルの数字を改変してから足すことになり、
> ファイルに数字が入っており、それを読み込んでから、合算します
と矛盾すると思いますがどうですか?
1つ目のテストケースは1ともう一つなにかを足すもので、インクリメントしてから足すコードになっているため偶然一致してパスしただけでしょう。
2つ目のテストケースは0と6を足すようなデータだったのでしょう。(1,2,3等別のパターンも考えられますが)
あとtagが "C" になってるけど、" C++" よね?
C++なんですが、Tagで選択できなかったので、Cにしました。偶然パスしただけですが…習い始めたばかりで、まだ理解できていない所が多々あるんですが、++numが不要ということでしょうか。
>C++なんですが、Tagで選択できなかったので、Cにしました。
C+まで打てば出ますよ
回答2件
あなたの回答
tips
プレビュー