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

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

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

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

2回答

12843閲覧

[C言語]倍精度浮動小数型配列のプログラムでのエラー

mdV7jWTlQaT74kE

総合スコア3

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2020/08/05 17:30

設問が以下のようにありまして
"要素数(サイズ)9の倍精度浮動小数点型配列に,キーボードから9個の実数を入力すると,入力された実数が1行に3個ずつ表示されるプログラムを作成せよ.ただし,実数の出力書式を,全体8桁小数部3桁とすること."
とあります。
以下のように

c#

1#include <stdio.h> 2int main(void) 3{ 4 double i,r[9]; 5 for(i=0;i<9;i++) 6 { 7 printf("実数を入力:"); 8 scanf("%lf",&r[i]); 9 } 10 for(i=0;i<9;i+=3) 11 printf("%8.3f %8.3f %8.3f",r[i],r[i+2],r[i+3]); 12 return 0; 13} 14

と入力したところ

c#

1kadai10-9.c:9:22: error: array subscript is not an integer 2 scanf("%lf",&r[i]); 3 ^~ 4kadai10-9.c:12:33: error: array subscript is not an integer 5 printf("%8.3f %8.3f %8.3f",r[i],r[i+2],r[i+3]); 6 ^~ 7kadai10-9.c:12:38: error: array subscript is not an integer 8 printf("%8.3f %8.3f %8.3f",r[i],r[i+2],r[i+3]); 9 ^~~~ 10kadai10-9.c:12:45: error: array subscript is not an integer 11 printf("%8.3f %8.3f %8.3f",r[i],r[i+2],r[i+3]); 12 ^~~~ 13

とエラーが出てしまいました。
プログラミング初心者で質問の意味がわからないかもしれませんが教えてくださると嬉しいです。

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

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

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

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

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

guest

回答2

0

ベストアンサー

エラーが英語であっても、そのままネット検索するとたいてい日本語の情報が得られます。
もし日本語の情報が無かったとしても、翻訳してみればある程度意味が取れるはずです。

今回の場合Google翻訳に”array subscript is not an integer”を渡すと、日本語訳として「配列の添え字は整数ではありません」となりました。

つまり、

c

1 double i,r[9];

とdouble宣言しているiを使って

c

1 scanf("%lf",&r[i]);

のように配列の添え字に使用しているからです。

c

1 int i; 2 double r[9];

としてやれば良いです。

後まずい点として

c

1 for(i=0;i<9;i+=3) 2 printf("%8.3f %8.3f %8.3f",r[i],r[i+2],r[i+3]);

この処理、配列rの範囲外にアクセスしてしまいますよ。
順番にiの値を入れたところを考えてみてください。

i = 0のとき
r[0] , r[2], r[3] (おや?)

i = 3 のとき
r[3] , r[5], r[6]

i = 6 のとき
r[6], r[8] , r[9] ←範囲外アクセス

投稿2020/08/05 18:25

KoichiSugiyama

総合スコア3041

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

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

mdV7jWTlQaT74kE

2020/08/05 19:23

丁寧でとても分かりやすくありがとうございます。英語という苦手意識により自己解決を怠ってしまっていたかもしれません。添字というものの理解が甘かったです。rの範囲もガバガバでした。とても助かりました。ありがとうございます。
guest

0

エラーに書かれているとおりです。
array subscript is not an integer
「配列の添え字が整数ではありません。」
配列の添え字に使えるのは整数型だけです。doubleは使えません。

投稿2020/08/05 18:18

編集2020/08/05 18:23
amiya

総合スコア1218

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

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

mdV7jWTlQaT74kE

2020/08/05 19:24

英語力も大事ですね。たくさん勉強します。とてもありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問