アプリ版:「スタンプのみでお礼する」機能のリリースについて

C言語をgccにコンパイルしようとします。
#include <stdio.h>

#include <stdlib.h>

#include <math.h>


float kaijoukeisan(int k);


void main(void) {

    /* 精度を変更して表かする

     * %fの表示桁数を調整する必要がある

     * 十分に精度が上がらない場合、どんなプログラムの工夫が必要でしょうか?

     * その考察結果をwordのドキュメントして提出してください。

     * */

  int k; double kekka, fkaijou=1, seido=0.00000001;

    puts(" *** 自然対数の計算とmath.hの定数eの比較・検討 ***\n"); /* prints  */

  kekka = 1; k = 1;

    while (fkaijou>=seido) {

        fkaijou =kaijoukeisan(k);

        k++;

        kekka = kekka + fkaijou;

        printf("%d %1.12f %1.12f\n", k, kekka, fkaijou);//検証用

    }

    printf("精度=%1.12f\n自然対数の計算結果\n %1.12f\nmath.hのe\n %1.12f\n", seido, kekka, exp(1));

    return;

}

float kaijoukeisan(int k) {

    double f; int j, kaijou=1;

    for (j=1; j<=k; j++) { kaijou = kaijou * j; }

    f = (double)1/kaijou;

    return f;

}

で、コンパイルの際に誤謬が発生していますが、何が問題でしょうか。空白ではないと思います。

A 回答 (3件)

どんなエラーメッセージが出るのかくらいは掲示しましょう。




プロトタイプ宣言と実体なので問題ありません。>#2
    • good
    • 0

未経験者ジジィですから間違えているでしょうけど。



>float kaijoukeisan(int k);

>float kaijoukeisan(int k) { ~ }

って正しいのでしょうか?と言う疑問あり。
    • good
    • 0

gcc/clangなんかのUNIX/Linuxで良く使われるコンパイラは、どういうわけか知らんけど、math.hを使う時に、コンパイラオプションとして-lmを入れなければダメだ、と言う特徴があります。



あと、もうちょっと日本語に気をつけよう。

「C言語をgccにコンパイルしようとします。」

これは滅茶苦茶な日本語です。
正確には

「gccでCで書かれたソースコードをコンパイルしようとしています。」

ですよね。
なんせ「C言語をgccに」コンパイルは出来ないんで。
    • good
    • 1

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