回答編集履歴

3 ちょっと違った

catsforepaw

catsforepaw score 5823

2016/07/31 19:18  投稿

すでに指摘されていますが、
> int v[i];
これが問題ですね。初期化されていないiには何が入っているのか判らないので、配列vのサイズがいくつになるか予想が付きません。プログラムが正しく動かない原因となります。
おそらく、main関数実行時にiに6が入っていて、配列vのサイズが6で確保されたのだと思います。その後、jに11を入力してforループを回して配列vに1を入力していますが、`v[6]`に入力しようとしてすでに配列のサイズを超えており、たまたま'j'に1が入ってしまったのだと思われます。そのため、その時点でループを抜け、aveが6になってしまったのでしょう。
配列はサイズを入力してから確保するか、上限を決めて確保し、`j:`では上限の範囲内で入力するようにした方が良いです。
配列はサイズを入力してから確保するか、上限を決めて確保し、`j:`では上限の範囲内で入力するようにした方が良いです。
---
ちょっと違ったかも。最初のiは5が入っていて、v[5]を入力した時点でjに1が入った、というのが正確かもしれません。
2 sumとave間違え訂正

catsforepaw

catsforepaw score 5823

2016/07/31 19:01  投稿

すでに指摘されていますが、
> int v[i];
これが問題ですね。初期化されていないiには何が入っているのか判らないので、配列vのサイズがいくつになるか予想が付きません。プログラムが正しく動かない原因となります。
おそらく、main関数実行時にiに6が入っていて、配列vのサイズが6で確保されたのだと思います。その後、jに11を入力してforループを回して配列vに1を入力していますが、`v[6]`に入力しようとしてすでに配列のサイズを超えており、たまたま'j'に1が入ってしまったのだと思われます。そのため、その時点でループを抜け、sumが6になってしまったのでしょう。
おそらく、main関数実行時にiに6が入っていて、配列vのサイズが6で確保されたのだと思います。その後、jに11を入力してforループを回して配列vに1を入力していますが、`v[6]`に入力しようとしてすでに配列のサイズを超えており、たまたま'j'に1が入ってしまったのだと思われます。そのため、その時点でループを抜け、aveが6になってしまったのでしょう。
配列はサイズを入力してから確保するか、上限を決めて確保し、`j:`では上限の範囲内で入力するようにした方が良いです。
1 to

catsforepaw

catsforepaw score 5823

2016/07/31 19:01  投稿

すでに指摘されていますが、
> int v[i];
これが問題ですね。初期化されていないiには何が入っているのか判らないので、配列vのサイズがいくつになるか予想が付きません。プログラムが正しく動かない原因となります。
おそらく、main関数実行時にiに6が入っていて、配列vのサイズが6で確保されたのだと思います。その後、jに11を入力してforループを回して配列vに1を入力していますが、`v[6]`に入力しようとしてすでに配列のサイズを超えており、たまたま'j'に1が入ってしまったのだと思われます。そのため、その時点でループを抜け、sumが6になってしまったのでしょう。
配列はサイズを入力してから確保するか、上限を決めて確保し、`j:`では上限の範囲内で入力するようにした方が良いです。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る