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

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

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

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

Visual C++

Microsoft Visual C++はWindowsのCとC++の統合開発環境(IDE)であり、コンパイラやデバッガを含んでいます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

2回答

1876閲覧

C言語でマクロを用いた計算結果をcsvファイル出力したい

genchan2000

総合スコア2

C

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

Visual C++

Microsoft Visual C++はWindowsのCとC++の統合開発環境(IDE)であり、コンパイラやデバッガを含んでいます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2021/05/12 10:20

編集2021/05/12 12:28

前提・実現したいこと

C言語で、離散的に与えられた関数f(x)の1次微分の値をマクロを用いた数値計算で近似値として求め、それをcsvファイル出力したい。
ここでは、f(x)=7x^4-5x^3+3x,f'(x)=(f(x+h)-f(x-h))/2h としています。
xを1.99から2.01まで、0.01間隔で変化させます。

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

f'(x)を計算する式の"dfdx0 = f((x0 + h)) - f((x0 - h)) / (2.0 * h)"の"/"の下に赤い波線が引かれ、「式が必要です」と出ます。

該当のソースコード

C

1# include<stdio.h> 2# define _USE_MATH_DEFINES 3# include<math.h> 4#define f(x0) (7.0 * pow(x0, 4.0) - 5.0 * pow(x0, 3.0) + 3.0 * x0); 5FILE* fp; 6int main(void) 7{ 8 fopen_s(&fp, "aiueo.csv", "w"); 9 double x0; 10 double h = 0.01; 11 double fx0; 12 double dfdx0; 13 14 for (x0 = 1.99; x0 <= 2.01; x0 += h) { 15 fx0 = f(x0); 16 17 dfdx0 = f((x0 + h)) - f((x0 - h)) / (2.0 * h);//この式の"/"に赤い波線が引かれエラーとなっています。 18 19 fprintf(fp, "%lf,%lf,%lf,%lf\n", x0, fx0, h, dfdx0); 20 } 21 22 fclose(fp); 23 24 return(0); 25}

試したこと

エラーが出ている式の形を変えたりしました。

補足情報(FW/ツールのバージョンなど)

visual studio 2019 を使用しています。

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

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

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

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

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

dodox86

2021/05/12 10:31

コード提示の際のマークダウンでの書き方が誤っています。 ```C int main() { /* hoge */ return 0; } ``` のように書きます。(投稿の際はプレビュー画面を確認しましょう)
genchan2000

2021/05/12 12:29

ご指摘ありがとうございます。 次からは、プレビュー画面をしっかりと確認してから投稿したいと思います。
guest

回答2

0

C

1 #define f(x0) (7.0 * pow(x0, 4.0) - 5.0 * pow(x0, 3.0) + 3.0 * x0);

最後のセミコロンが余計です

投稿2021/05/12 10:31

y_waiwai

総合スコア88051

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

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

genchan2000

2021/05/12 12:32

ありがとうございます!
guest

0

ベストアンサー

f'(x)を計算する式の"dfdx0 = f((x0 + h)) - f((x0 - h)) / (2.0 * h)"の"/"の下に赤い波線が引かれ、「式が必要です」と出ます

マクロの末尾のセミコロン;を除去してください。
#define f(x0) (7.0 * pow(x0, 4.0) - 5.0 * pow(x0, 3.0) + 3.0 * x0)

投稿2021/05/12 10:29

dodox86

総合スコア9267

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

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

genchan2000

2021/05/12 12:32

ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問