乱数と構造体について教えてください。

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
Jaku
記事: 2
登録日時: 4ヶ月前

乱数と構造体について教えてください。

#1

投稿記事 by Jaku » 4ヶ月前

構造体XYのオブジェクトzahyoをfor関数を使って3個作り、zahyoのメンバxとyにGetRand関数を使って乱数を代入し、xとyを出力するというプログラムを作りたいのですが、出力結果のxとyがどうしてもすべて0になってしまいます。どうすれば良いのでしょうか?
ちなみにDXライブラリを使っております。

コード:

#include "DxLib.h"

struct XY {
	int x;
	int y;
};
int i;

int main(void) {
	
	XY zahyo[2];
	for (i = 0; i < 3; i++) {
		zahyo[i] = { GetRand(100),GetRand(100) };
		printf("%d,%d\n", zahyo[i].x, zahyo[i].y);
	}





	WaitKey();
	DxLib_End();
	return 0;
}
出力結果:
0,0
0,0
0,0

アバター
みけCAT
記事: 6225
登録日時: 9年前
住所: 千葉県
連絡を取る:

Re: 乱数と構造体について教えてください。

#2

投稿記事 by みけCAT » 4ヶ月前

  • 配列zahyoは2要素しかなく、範囲外のzahyo[2]に書き込みをしてしまうため、危険です。
    zahyoの要素数を増やしてください。
  • DXライブラリの機能を使う前には、DxLib_Init()関数を呼ぶべきであると考えられます。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

Jaku
記事: 2
登録日時: 4ヶ月前

Re: 乱数と構造体について教えてください。

#3

投稿記事 by Jaku » 4ヶ月前

返信ありがとうございます。

みけCATさんのご指摘通り、zahyoの要素数を増やしDxLib_Initを書き加えたら正常に動作しました!
一応コードを貼っておきます。

コード:

#include "DxLib.h"

int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int) {
	ChangeWindowMode(TRUE);
	DxLib_Init();

	struct XY {
		int x;
		int y;
	};
	int i;
	int Green = GetColor(0, 255, 0);
	int x = 200, y = 200;

	XY zahyo[3];
	for (i = 0; i < 3; i++) {
		zahyo[i] = { GetRand(100),GetRand(100) };
		DrawFormatString(x,y,Green,"%d,%d\n", zahyo[i].x, zahyo[i].y);
		y += 20;
	}





	WaitKey();
	DxLib_End();
	return 0;
}

返信

“C言語何でも質問掲示板” へ戻る