質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

データ構造

データ構造とは、データの集まりをコンピュータの中で効果的に扱うために、一定の形式に系統立てて格納する形式を指します。(配列/連想配列/木構造など)

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

Q&A

3回答

722閲覧

入力したデータを判定するプログラムを作成したいです

koko-aa

総合スコア0

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

データ構造

データ構造とは、データの集まりをコンピュータの中で効果的に扱うために、一定の形式に系統立てて格納する形式を指します。(配列/連想配列/木構造など)

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

0グッド

0クリップ

投稿2020/07/27 11:37

編集2020/07/27 11:42

#実現したいこと
ご覧いただきありがとうございます。
任意の入力したn個のデータから、決めた数以上の数が何個であるか調べるプログラムを作成しております。

質問は以下になります。
調べたい数と基準とする数を実数にしたいのですが、floatにした場合うまくプログラムが作動しません。また、intのときは小さな数では作動してくれるのですが、10個分の判定など大きな数になってくるとうまく作動しません。どこが違うのでしょうか。
この形式のプログラミングは初めてでどのような流れか理解しておきたいです。なのでヒントではなく答えを教えていただけると助かります。
そして、エラーコードからdata[100]の部分が間違っていると思うのですが、組み込んでいるのに使われていないと出てしまうのはどういうことなのでしょう。

ご迷惑おかけしますがお手を伸べていただけると幸いです。
よろしくお願いします。

#include <stdio.h>

int main(void) {
int i,n,a;
float x,j;
float data[100];

printf("データの個数入力 : "); scanf("%d",&n); for(i=1;i<n+1;i++){ printf("判定する数値%d : ",i); scanf("%f",&data[j]); } printf("基準の数値入力 : "); scanf("%f",&x); a=0; for(j=0;j<n+1;j++){ if(data[j]>=x){ a+=1; } } printf("%f以上のデータは%d個",x,a); return 0;

}

発生している問題・エラーメッセージ

prog.c: In function ‘main’:
prog.c:13:25: error: array subscript is not an integer
scanf("%f",&data[j]);
^
prog.c:22:16: error: array subscript is not an integer
if(data[j]>=x){
^
prog.c:7:11: warning: variable ‘data’ set but not used [-Wunused-but-set-variable]
float data[100];

試したこと 

for文の条件の変更
int,floatの変更
文の順番入れ替え
指定するデータの変更
実行データの確認

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

data[j] がエラーですね。 j は整数である必要があるのですが、float x,j;

未使用と言われるのは、上記のエラーの結果。

投稿2020/07/27 11:48

pepperleaf

総合スコア6385

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

koko-aa

2020/07/27 20:01

コメントありがとうございます。 intの方へjを移動させました。ですが、このプログラムは小数点以下を含む数を判別してくれません。どうしたら判定対象に入りますか?
guest

0

google翻訳
prog.c:13:25: error: 配列の添え字は整数ではありません

投稿2020/07/27 11:44

y_waiwai

総合スコア88042

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

koko-aa

2020/07/27 20:03

コメントありがとうございます。添え字が整数でないといけないことはわかりました。ですが、小数点以下の桁もある数字も判別したいです。 その場合はどうすればよいのでしょうか。
y_waiwai

2020/07/27 21:32

それがなぜ配列の個数が小数点が必要なのか理解できません。 なにか勘違いしてませんか? 判定したい数値には小数点が必要であっても、 判定したい個数は、小数点いりませんよ
guest

0

c

1float x,j; 2float data[100]; 3 4printf("データの個数入力 : "); 5scanf("%d",&n); 6for(i=1;i<n+1;i++){ 7 printf("判定する数値%d : ",i); 8 scanf("%f",&data[j]); 9}

jの値は一切設定されていませんので、data[j]は正しい場所をおそらく指しません。

投稿2020/07/27 11:39

maisumakun

総合スコア146018

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

koko-aa

2020/07/27 20:06

コメントありがとうございます。jの値が設定されていないというのは整数ではないからいけないということでしょうか。判定したい数字には少数点以下の数も含まれます。その場合はどう指定すればよいでしょうか。
maisumakun

2020/07/27 22:05

> jの値が設定されていないというのは整数ではないからいけないということでしょうか。 たしかにjが浮動小数点数であるのも適当ではないのですが、それとは別件です。ローカル変数として「float j;」と宣言しただけでは、jの値は「不定」で、そのような変数を参照するコードの動作は未定義(何が起きても文句は言えない≒そんなコードは書いてはいけない)です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問