ページ 11

配列の中で、初期化していなかったら前の配列に補完したい

Posted: 2013年7月17日(水) 17:54
by Tangeθ
下のコードのif文は、どう書けば良いのでしょうか?
それとも、初期化しているか、していないかは判断できないのでしょうか?

コード:


typedef struct
{
     int a,b,c;
} HOGE;

void hogee
{
	HOGE hoge[10];
	hoge[0].a=hoge[0].b=hoge[0].c=0;
	hoge[1].a=hoge[1].b=0;

	for(int i=0;i<10;i++)
	{
		if(hoge[i]のaが初期化していない)
		{
			hoge[i].a=hoge[i-1].a;
		}
		if(hoge[i]のbが初期化していない)
		{
			hoge[i].a=hoge[i-1].b;
		}
		if(hoge[i]のcが初期化していない)
		{
			hoge[i].c=hoge[i-1].c;
		}
	}
}

Re: 配列の中で、初期化していなかったら前の配列に補完したい

Posted: 2013年7月17日(水) 18:20
by usao
判断材料はありません.

代替手段として,例えば
a,b,cの有効な値域がある範囲内に制限されていることが既知であれば
”その範囲外の値で必ず初期化しておく”等して判定できると思いますが
これらの変数がintの全域にわたって値を取り得る条件下だとそれも無理です.

Re: 配列の中で、初期化していなかったら前の配列に補完したい

Posted: 2013年7月17日(水) 18:23
by Tangeθ
なるほど、勉強になりました。ありがとうございます。