以下のプログラム(成功している)で、int iを2回使っているのに、2回目のiの増減で最初のfor内が実行されないのはどうしてでしょうか??
#include <iostream>
#include <fstream>
using namespace std;
main(){
char n[5][100];
int p[5];
double a[5];
ifstream pref;
pref.open("prefecture.txt");
pref.width(100);
for(int i=0;i<5;i++){ ←ここです!
pref>>n;
pref>>p;
pref>>a;
}
pref.close();
for(int i=0;i<5;i++){
cout<<n<<","<<p<<","<<a<<"\n";
}
}
教えて優しい人!
Re:教えて優しい人!
> int iを2回使っているのに、2回目のiの増減で最初のfor内が実行されないのはどうしてでしょうか??
そのプログラムは、
open
width
iによる5回のループ(1回目)
close
iによる5回のループ(2回目)
を上から順に実行している、ということはわかりますか?

そのプログラムは、
open
width
iによる5回のループ(1回目)
close
iによる5回のループ(2回目)
を上から順に実行している、ということはわかりますか?

Re:教えて優しい人!
まず、変数のスコープを理解して下さい。
for(int i=0;i<5;i++){
こうやって宣言された変数iはforループ内しか有効ではありません。
なので2番目のforループの変数iとは名前が一緒でもC++にとっては別変数です。
>以下のプログラム(成功している)で、int iを2回使っているのに、2回目のiの増減で最初のfor内が実行されないのはどうしてでしょうか??
これの意味が良く分からないのですが、プログラムの実行順序と言うのが良く分かっていないって事でしょうか?
特殊なものを除いて、プログラム言語は逐次実行と言って上から順に命令が実行されていきますので2つのforループが同時に実行されることなどありえません。つまり、1つ目のforループが終了しない限り2つめのforループは実行されませんし2つめのループ中に1つ目のループに戻ることはありません。
for(int i=0;i<5;i++){
こうやって宣言された変数iはforループ内しか有効ではありません。
なので2番目のforループの変数iとは名前が一緒でもC++にとっては別変数です。
>以下のプログラム(成功している)で、int iを2回使っているのに、2回目のiの増減で最初のfor内が実行されないのはどうしてでしょうか??
これの意味が良く分からないのですが、プログラムの実行順序と言うのが良く分かっていないって事でしょうか?
特殊なものを除いて、プログラム言語は逐次実行と言って上から順に命令が実行されていきますので2つのforループが同時に実行されることなどありえません。つまり、1つ目のforループが終了しない限り2つめのforループは実行されませんし2つめのループ中に1つ目のループに戻ることはありません。
Re:教えて優しい人!
boxさん
ご返信ありがとうございます!!
大丈夫です!それは一応わかります。
softyaさん
ご返信ありがとうございます!!
成る程!スコープ内(?)の変数宣言はその変数内でしか適用されないのですね!!
それと逐次実行ですね!覚えておきます!ありがとうございます!
解決しました。
御二方、本当にありがとうございます。
ご返信ありがとうございます!!
大丈夫です!それは一応わかります。
softyaさん
ご返信ありがとうございます!!
成る程!スコープ内(?)の変数宣言はその変数内でしか適用されないのですね!!
それと逐次実行ですね!覚えておきます!ありがとうございます!
解決しました。
御二方、本当にありがとうございます。
Re:教えて優しい人!
もう解決してしまったみたいですが。
>成る程!スコープ内(?)の変数宣言はその変数内でしか適用されないのですね!!
間違ってますよ。
スコープ内で宣言した変数はそのスコープ内でしか使えないって意味ですよ。
{
int a = 2;
}
としたら、{} の中がスコープで、その外側ではaは参照(使えない)できないということです。

>成る程!スコープ内(?)の変数宣言はその変数内でしか適用されないのですね!!
間違ってますよ。
スコープ内で宣言した変数はそのスコープ内でしか使えないって意味ですよ。
{
int a = 2;
}
としたら、{} の中がスコープで、その外側ではaは参照(使えない)できないということです。
