質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

解決済

2回答

3263閲覧

ファイルを読み込み、合計を計算 C++

Chibichan

総合スコア72

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

0グッド

1クリップ

投稿2020/07/31 17:19

編集2020/07/31 18:11

ファイルの数値を読み込み、足すのですが、自動チェックで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); } }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

SHOMI

2020/07/31 17:51

sumが宣言されていなくてそもそもコンパイルが通りませんよ
SHOMI

2020/07/31 17:52

1つ目のnumは読み捨てていて、2つ目以降はインクリメントしてから加算しようとしているようですが >ファイルの数値を読み込み、足す とはどういう仕様なのでしょうか?
Chibichan

2020/07/31 18:15

始めの宣言の変更を忘れていました。機械での自動チェックなので、ファイルにどんな数値が入っているかはわかりません。1回目のチェックはパスできましたが、2回目で、私のコードの結果が7で、正解は6でした。ファイルに数字が入っており、それを読み込んでから、合算します。
Penpen7

2020/07/31 20:10 編集

SHOMIさんの言うことの繰り返しになると思いますが、 一行目の値を加算していませんが、1行目の数字は足さずに無視すると言うことであっていますか? あと、++num;としてからsum+=numとすると、元のファイルの数字を改変してから足すことになり、 > ファイルに数字が入っており、それを読み込んでから、合算します と矛盾すると思いますがどうですか?
SHOMI

2020/07/31 22:07 編集

1つ目のテストケースは1ともう一つなにかを足すもので、インクリメントしてから足すコードになっているため偶然一致してパスしただけでしょう。 2つ目のテストケースは0と6を足すようなデータだったのでしょう。(1,2,3等別のパターンも考えられますが)
episteme

2020/08/01 01:06

あとtagが "C" になってるけど、" C++" よね?
Chibichan

2020/08/01 04:12

C++なんですが、Tagで選択できなかったので、Cにしました。偶然パスしただけですが…習い始めたばかりで、まだ理解できていない所が多々あるんですが、++numが不要ということでしょうか。
SHOMI

2020/08/02 01:21

>C++なんですが、Tagで選択できなかったので、Cにしました。 C+まで打てば出ますよ
guest

回答2

0

ベストアンサー

c.cpp

c++

1#include <iostream> 2#include <fstream> 3 4using namespace std; 5 6int main() { 7 ifstream f("luvut.txt"); 8 if (f.is_open()) { 9 int num = 0; 10 int sum = 0; 11 while (f >> num) { 12 sum += num; 13 } 14 cout << "合計 "<< sum << endl; 15 } else { 16 cout << "ファイルが開けませんでした!" << endl; 17 return -1; 18 } 19 return 0; 20} 21

実行例
イメージ説明

投稿2020/07/31 22:47

katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Chibichan

2020/08/01 04:13

ありがとうございます!++numは、不要なんですね。
katoy

2020/08/01 05:01

合計だけでなく平均値も計算するなら、個数を知るために なにか変数を用意して、+1 をしていくことが必要になりますね。
guest

0

この行はどういう意味があるんでしょう

f >> num;

while (f >> num) {
++num;
sum += num;
}

最初に読み込んだnumは何もしないで捨ててますね
んで、読み込んだ数値に1足してますが、これはいいんでしょうか

投稿2020/07/31 21:57

編集2020/07/31 21:58
y_waiwai

総合スコア88042

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Chibichan

2020/08/01 04:14

++numの役割を理解せず、調べて入れてみただけでした。始めたばかりで、まだ理解できていない所が多々あります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問