• 締切済み

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); }

みんなの回答

  • php504
  • ベストアンサー率42% (926/2160)
回答No.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[ ]配列の使用意図も良くわかりませんね。無くてもいいと思いますが。

alice_m
質問者

お礼

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

すると、全ての回答が全文表示されます。

専門家に質問してみよう