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

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

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

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

プログラミング言語

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

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

Q&A

1回答

1009閲覧

C言語 二項演算子 Simpson法 積分

KNTN

総合スコア25

C

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

プログラミング言語

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

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

0グッド

0クリップ

投稿2022/01/03 09:10

プログラムについての質問です。 シンプソン法を用いて区間[0,1]でexpxを積分した値を求めるプログラムを作ろうとしているのですがエラーが生じ、エラーメッセージの意味がわからないため質問させていただきます。
プログラムについてですがEPSは分割数Nの場合と分割数2Nの場合の定積分値を比較しその差の絶対値がEPSよりも小さいときに定積分値の計算が終了しそれまでは分割数Nを二倍ずつ増加させる再帰的なプログラムとするためのものです。

C

1#include<stdio.h> 2#include <math.h> 3 4double funk(double x); 5double simpson(double a, double b, int n, double (*f)()); 6 7int main(void) 8{ 9double *g; 10double EPS; 11 12printf("sei no seisuu wo nyuuryoku\n"); 13scanf("%f",EPS); 14 15*g = EPS; 16 17printf("exp(x) wo [0,1] de sekibun simasu. bunkatu suu ha %f desu \n",2*EPS); 18printf("result is %20.15f\n",simpson(0, 1.0, EPS, funk)); 19return 0; 20} 21 22double simpson(double a, double b, int n, double (*f)()) { 23 24double S,h; 25int i; 26 27h=(b-a)/(2.0*n); 28 29S=((*f)(a)+(*f)(b)); 30 31for (i=1;i<n;i++) 32{ 33S += 4.0*(*f)(a+(2.0*i-1.0)*h)+2.0*(*f)(a+2.0*i*h); } 34 35S += 4.0*(*f)(a+(2.0*n-1.0)*h); S *= h/3.0; return S; 36} 37 38double EPS(double *g) 39{ 40int n; 41 42*g = (simpson(0, 1.0, 2.0*n, funk)- simpson(0, 1.0, n, funk)); 43 44if(*g < f) 45 46return simpson(0,1,n,funk); 47 48else return 1; 49} 50 51double funk(double x) { 52return (exp(x)); 53}

エラーメッセージ

4.1.c: 関数'EPS'内:
4.1.c:45:7: 二項演算子 < への無効な被演算子です('double'と'double ()(double()' if(*g < EPS)

と表示されます。改善策(具体的なコードを提示していただけると助かります)を教えてください。

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

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

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

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

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

episteme

2022/01/04 16:29

コードとエラーメッセージとが合致していません。 > if(*g < EPS) EPS? コードでは f です。
guest

回答1

0

関数:EPS内の

if(*g < f)

f がどこにも定義/宣言されていません。

投稿2022/01/04 16:27

episteme

総合スコア16614

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問