エラーメッセージの意味がよく分かりません

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
miku

エラーメッセージの意味がよく分かりません

#1

投稿記事 by miku » 12年前

コード:

 #include <stdio.h>
#include <stdlib.h>
int main(void) 
{
 FILE *fp; 
 int ip, ih, ii,  rnd; 
 int hst[10]={0.0}; 
 float x;
 for(ii=0;ii<10000;ii++)
  {
   rnd=rand( ); 
   x=(float)rnd/RAND_MAX; 
   float point[10000]={x};
   for(ip=0;ip<10000;ip++)
   { 
   if(0<=point[ip]<0.10)   hst[0.05]++; 
   if(0.1<=point[ip]<0.20) hst[0.15]++; 
   if(0.2<=point[ip]<0.30) hst[2.5]++; 
   if(0.3<=point[ip]<0.40) hst[3.5]++; 
   if(0.4<=point[ip]<0.50) hst[4.5]++; 
   if(0.5<=point[ip]<0.60) hst[5.5]++;  
   if(0.6<=point[ip]<0.70) hst[6.5]++; 
   if(0.7<=point[ip]<0.80) hst[7.5]++; 
   if(0.8<=point[ip]<0.90) hst[8.5]++;
   if(0.9<=point[ip]<1.0)  hst[9.5]++; 
   }
   }
   fp = fopen("score.csv","w"); 
   for(ih=0;ih<10;ih++)
   {
   printf("hst[%d]=%d\n",ih,hst[ih]);
   fprintf(fp,"%d,%d\n",ih,hst[ih]);
   }
   fclose(fp);
   printf("RAND_MAX=%d¥n",RAND_MAX); 
   return 0;
   }
 
上記のコードを実行しようとすると
kadai14.0.c:16: error: array subscript is not an integer
kadai14.0.c:17: error: array subscript is not an integer
kadai14.0.c:18: error: array subscript is not an integer
kadai14.0.c:19: error: array subscript is not an integer
kadai14.0.c:20: error: array subscript is not an integer
kadai14.0.c:21: error: array subscript is not an integer
kadai14.0.c:22: error: array subscript is not an integer
kadai14.0.c:23: error: array subscript is not an integer
kadai14.0.c:24: error: array subscript is not an integer
kadai14.0.c:25: error: array subscript is not an integer
というエラーメッセージが出るのですが
どうすればよいでしょうか。
よろしくお願いします

nil
記事: 428
登録日時: 13年前

Re: エラーメッセージの意味がよく分かりません

#2

投稿記事 by nil » 12年前

インデントは正確に行ってください。

C/C++(とその他大部分の言語)では条件文を
0<=point[ip]<0.10
このように書くことはできません(動かないわけではないのですが、mikuさんの予想とは異なった動作をするはずです)。
0 <= point[ip] && point[ip] < 0.10
のように書かねばなりません
最後に編集したユーザー nil on 2012年10月26日(金) 00:25 [ 編集 1 回目 ]

nil
記事: 428
登録日時: 13年前

Re: エラーメッセージの意味がよく分かりません

#3

投稿記事 by nil » 12年前

あと、配列の添字は整数型でなければならず、
hst[0.05]++;
これもまた不可です

追記:
おかしい点が多いため、追記します。

コード:

 #include <stdio.h>
#include <stdlib.h>
int main(void) 
{
 FILE *fp; 
 int ip, ih, ii,  rnd; 
 int hst[10]={0.0};  // int型(整数型)をdouble型(実数型)で初期化している
 float x;
 for(ii=0;ii<10000;ii++)
  {
   rnd=rand( ); 
   x=(float)rnd/RAND_MAX; 
   float point[10000]={x}; // ここではpoint[0]にxが代入されただけ
   for(ip=0;ip<10000;ip++)
   { 
   if(0<=point[ip]<0.10)   hst[0.05]++;  // 条件文内、float型とdouble型を比較している
   if(0.1<=point[ip]<0.20) hst[0.15]++; 
   if(0.2<=point[ip]<0.30) hst[2.5]++; 
   if(0.3<=point[ip]<0.40) hst[3.5]++; 
   if(0.4<=point[ip]<0.50) hst[4.5]++; 
   if(0.5<=point[ip]<0.60) hst[5.5]++;  
   if(0.6<=point[ip]<0.70) hst[6.5]++; 
   if(0.7<=point[ip]<0.80) hst[7.5]++; 
   if(0.8<=point[ip]<0.90) hst[8.5]++;
   if(0.9<=point[ip]<1.0)  hst[9.5]++; 
   }
   }
   fp = fopen("score.csv","w"); 
   for(ih=0;ih<10;ih++)
   {
   printf("hst[%d]=%d\n",ih,hst[ih]);
   fprintf(fp,"%d,%d\n",ih,hst[ih]);
   }
   fclose(fp);
   printf("RAND_MAX=%d¥n",RAND_MAX); 
   return 0;
   }

box
記事: 2002
登録日時: 14年前

Re: エラーメッセージの意味がよく分かりません

#4

投稿記事 by box » 12年前

miku さんが書きました: というエラーメッセージが出るのですが
どうすればよいでしょうか。
その前に、「これは何々をしたいプログラムです。」という説明がなくていいんでしょうか。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

閉鎖

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