電子書籍の厳選無料作品が豊富!

これは何故ダメなのですか?
https://code.hackerearth.com/a5e974Y

内容は数列kappaの第1項から第100項までの和を取るというつもりでつくりました。

A 回答 (4件)

> intの前にいれる式はどのようなものを入れなければならないのですか?



これはコンパイルエラーとして

> 8:1: error: expected expression before 'int'
> 8行目、intの前に式が必要です

と書いてますが、実際は重要なのはむしろその下の3つ

> 9:5: error: conflicting types for 'kitsune'
> 9行目、kitsuneの型が衝突しています

> 6:9: note: previous declaration of 'kitsune' was here
> 6行目でkitsuneは既に宣言されています

> 9:1: error: invalid initializer
> 9行目の宣言は不適切な初期化です

で、要するに6行目でkitsuneないしはkappaがintの配列だ、って宣言されてるのに9行目以降で同じ変数を「再宣言」してる事が問題なんです。
6行目(と7行目)でint宣言した変数はその後intを付ける必要はありません。

ちょっと直したみたいですが、まずは8行目と10行目のintを削除しましょう。
それで再コンパイルしてエラーが減るかどうか見てみましょう。
(プログラミングはエラーとの戦いなんで、まずは「エラーを徐々に減らしていく」と言うのが必要です)

それから、#2と#3で解説されてますが、100個の要素がある配列の宣言は、例えばこの例で言うと

int kitsune[100]

ってのはオーケーです。これで100個の要素を持つ配列が宣言出来ます。
ただし。
要素順番の「数え方」は0から始まって99まで、です(0から99で100個あるでしょ?)。
つまりforで回す場合は例えば(最初にkを宣言しなかったら)

for (int k = 0; k < 100; k++) {
 処理内容;
}

と言うカタチになるのが基本です(この場合kが100になる事はないですね)。
    • good
    • 0
この回答へのお礼

解決しました

無事完成しました。もっと改良したいのはやまやまですがもっと勉強してからにしておきます。
ありがとうございました。

お礼日時:2017/01/09 19:08

リンク先、修正したみたいですな。



>intの前にいれる式はどのようなものを入れなければならないのですか?

そもそもそんなところにint要らないんですが…。
『ローカル変数を宣言』したいんですか?『キャストしたい』んですか?
なんでintが必要だと思ったんでしょうか?

>配列の数字は0からなんですね。
>勘違いしていました。

うん。理解していただけていないようで諦めました。
先の回答を受けて、
int kitsune[99];
に対して
printf("和は%dです",kitsune[100]);
が可能である。と理解されたようですね。
危険なプログラムを作成する者として精進してください。
本職(プログラマー)への道は険しいです。
    • good
    • 0

コンパイルエラー修正しても駄目な点がありますけどね。



・配列の添字は0からになります。
・int kitsune[100]で確保した配列で有効な添字は0~99までです。
    • good
    • 0
この回答へのお礼

配列の数字は0からなんですね。
勘違いしていました。
ありがとうございます

お礼日時:2017/01/09 08:14

コンパイルするとエラーが出てきますよね。


落ち着いてそれを読んでください。

In function 'main':
7:5: error: 'k' undeclared (first use in this function)
7行目、kが宣言されていません(この関数内で初登場です)

7:5: note: each undeclared identifier is reported only once for each function it appears in
注: 7行目以降の未宣言の識別子はここで一回だけ警告します
8:1: error: expected expression before 'int'
8行目、intの前に式が必要です

9:5: error: conflicting types for 'kitsune'
9行目、kitsuneの型が衝突しています

6:9: note: previous declaration of 'kitsune' was here
6行目でkitsuneは既に宣言されています

9:1: error: invalid initializer
9行目の宣言は不適切な初期化です

10:5: error: 'i' undeclared (first use in this function)
10行目、iは未宣言です(この関数内で初登場です)

11:1: error: expected expression before 'int'
11行目、intの前に式が必要です
    • good
    • 0
この回答へのお礼

ありがとうございます
intの前にいれる式はどのようなものを入れなければならないのですか?

お礼日時:2017/01/09 08:13

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!