みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

Run-Time Check Failure #3 と表示されてしまうことについて

初歩的な質問で申し訳ありません。
Visual Studio C++にて、入力された値を基に最短(最小値)を求めていくプログラムを作成しているのですが、
”Run-Time Check Failure #3 - The variable 'x' is being used   without being defined.”
と表示されて、コマンドプロンプトが実行されません。
なぜこうなってしまうのですか?
参考までに下記に作成したソースコードを示します。
初心者ゆえ書き方がしっかりとできておらず、大変わかりにくいソースかとは思いますが、助言をいただければ幸いです。

#include "stdafx.h"
#include "stdlib.h"

#define MAX_LINE 256
#define MIN_DATA 3

int _tmain(int argc, _TCHAR* argv[])
{
char buf[MAX_LINE];
int i,x,y,z,min_data;
int data[MIN_DATA] = {x,y,z};

printf("Sからaまでの距離を入力して下しい。\n");
gets(buf); /*キーボードから値を入力*/
x = atoi(buf);
printf("a=%dです。\n",x);

printf("Sからbまでの距離を入力して下しい。\n");
gets(buf);/*キーボードから値を入力*/
y = atoi(buf);
printf("b=%dです。\n",y);

printf("Sからcまでの距離を入力して下しい。\n");
gets(buf);/*キーボードから値を入力*/
z = atoi(buf);
printf("c=%dです。\n",z);

printf("並べ替えると\n");
min_data = data[30];/*入力された値を降順で並べ最小値を表示*/
for (i = 0; i < MIN_DATA; i++) {
if (min_data > data[i]) {
min_data = data[i];
}
}
printf("最短は %d\n", min_data);
printf("Enterで終了");
return (0);
}

投稿日時 - 2009-02-04 08:13:03

QNo.4687888

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

エラーの意味は「変数'x'が、値が定義されていないのに使用されています」という内容です。
int data[MIN_DATA] = {x,y,z};
ここで値の定義されていない変数を使っています。配列の初期化に変数を使うのも間違いです。
int data[MIN_DATA] = {0};
で配列がすべて0で初期化されるのでこれでいいと思いますが。

それと
min_data = data[30];/*入力された値を降順で並べ最小値を表示*/
ですが、data[ ]はMIN_DATA(3)個しかないのでdata[0]~data[2]までしか使えません。data[30]を使ってはだめです。
data[ ]配列の使用意図も良くわかりませんね。無くてもいいと思いますが。

投稿日時 - 2009-02-04 08:39:31

お礼

迅速な回答ありがとうございます。そして、返事が遅くなって申し訳ありませんでした。
大変参考になりました。本当にありがとうございます。また、稚拙な表現でご迷惑おかけしてしまって申しけくなく思います。

投稿日時 - 2009-02-04 15:32:09

あなたにオススメの質問