
c言語初心者です。
「f(t)=exp(t)の、0から1までの定積分を台形公式により計算せよ」
という問題に取り掛かっているのですが、うまくいきません。
以下に私の書いたものと、エラーメッセージを載せますので、添削をよろしくお願いします。
●プログラム
#include<stdio.h>
#include<math.h>
int main(void)
{
int N,n
double d,t[10000],f[10000],s=0,In=0;
printf("N=");
scanf("%d",&N);
d=1/N;
while(n=0;n<=N;n++)
{
t[n]=n*d;
f[n]=exp(t[n]);
}
while(n=1;n<=N-1;n++)
{
s=s+f[n];
}
In=d*((f[0]/2)+s+(f[N]/2));
printf("mennseki=%f",In);
return 0;
}
●エラーメッセージ(このプログラムのファイル名をz-2-2.cとしています。)
z-2-2.c
z-2-2.c(7) : error C2143: 構文エラー : ';' が '型' の前にありません。
z-2-2.c(14) : error C2143: 構文エラー : ')' が ';' の前にありません。
z-2-2.c(14) : warning C4552: '<=' : 演算子にプログラム上の作用がありません。作用
を伴う演算子を使用してください
z-2-2.c(14) : error C2059: 構文エラー : ')'
z-2-2.c(15) : error C2143: 構文エラー : ';' が '{' の前にありません。
z-2-2.c(19) : error C2143: 構文エラー : ')' が ';' の前にありません。
z-2-2.c(19) : warning C4552: '<=' : 演算子にプログラム上の作用がありません。作用
を伴う演算子を使用してください
z-2-2.c(19) : error C2059: 構文エラー : ')'
z-2-2.c(20) : error C2143: 構文エラー : ';' が '{' の前にありません。

No.1ベストアンサー
- 回答日時:
まず、C言語の文法上のミスと誤りから。
エラーはこれが原因で出てます。<<7行目のエラーの原因>>
int N,n ←この行の最後に ; が抜けています。
<<14,15行目のエラーの原因(19,20行目も同様)>>
while(n=0;n<=N;n++) ←whileの引数に取れるのは条件式1つだけです。(n=0;n<=N;n++)という書式の引数を取れるのはforです。
と、これで文法的なエラーは出なくなるはずですが、おそらく正しい結果は得られません。台形公式の解釈が間違っていると思いますので、それは公式の意味をもう一度よく考えてみてください。

No.5
- 回答日時:
いやいや、宣言の時にdoubleにしてはいけません。
1/Nを計算する時に「キャスト」するんです。キャストってわかりませんか? 日本語で言うと「型変換」です。教科書調べてみてください。ちなみに、簡易的な方法としては「1/N」を「1.0/N」とすれば、暗黙のキャストが実行されて問題は解決する…と思いますが、どうしてそうなるのかを理解するためにキャストとはどういうことかをきちんと調べてみてください。
この回答への補足
いきました!
ありがとうございます。
最後にひとつ質問したいのですが、
キャストする前に(#4補足)出てきたエラーの中に、
z-2-2.c(16) : error C2198: 'exp' : 呼び出しに対する引数が少なすぎます。
とあるのですが、これは何が原因なのでしょうか?

No.4
- 回答日時:
なるほど。
わかりました。d=1/N;
この計算の右辺は「1」も「N」もint型なので計算はintで行われます。すると、N>1の時、計算結果の小数点以下は切り捨てられるので、答えは「0」になります。その後、dへの代入のためにdoubleにキャストされるので、dの値は0.000000になってしまいます。
この状態を解消するには、割り算が実行される前の「1」と「N」を明示的にdouble型にキャストしてあげればいいということになります。
この回答への補足
連絡遅くなってしまって申し訳ありません。
n,Nをそれぞれ、doubleにしましたが、以下のようなエラーが出てきてしまいました。
z-2-2.c
z-2-2.c(15) : error C2108: 添字に整数でない型が使われました。
z-2-2.c(16) : error C2108: 添字に整数でない型が使われました。
z-2-2.c(16) : error C2108: 添字に整数でない型が使われました。
z-2-2.c(16) : error C2198: 'exp' : 呼び出しに対する引数が少なすぎます。
z-2-2.c(20) : error C2108: 添字に整数でない型が使われました。
z-2-2.c(23) : error C2108: 添字に整数でない型が使われました。
z-2-2.c(26) : error C2108: 添字に整数でない型が使われました。
z-2-2.c(27) : error C2108: 添字に整数でない型が使われました。

No.3
- 回答日時:
えーと、ちょっとすぐにはどこがおかしいかピンと来ないのですが、このような場合、途中の計算結果を全て出力させてみてどこがおかしいのかを探るのが得策です。
計算で求めているd,t[n],f[n],sの値を全部出力させて、値を見て考えてみてください。
この回答への補足
N=1,2,3の場合について出力させてみたところ、このようになりました。dの値すら0.000000となっているのはなぜでしょうか?
N=1
d=1.000000
t[n]=1.000000
f[n]=2.718282
s=0.000000
mennseki=1.859141
N=2
d=0.000000
t[n]=0.000000
f[n]=1.000000
s=1.000000
mennseki=0.000000
N=3
d=0.000000
t[n]=0.000000
f[n]=1.000000
s=2.000000
mennseki=0.000000
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語 3 2022/10/04 15:07
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- C言語・C++・C# C++のcase文の書き方 4 2023/02/24 20:50
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 最初に正の整数nの入力を受け付け、次に分数の分子と分 1 2022/07/19 17:03
- C言語・C++・C# 3×3のラテン方陣をつくるプログラムを作成したのですが、(↓) #include <stdio.h> 5 2023/07/10 01:53
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 malloc関数を使ってください!お願いします! 最 1 2022/07/21 09:28
- C言語・C++・C# このプログラミングの問題を教えてほしいです。 キーボードからデータ数nとn個のデータを入力し、平均値 3 2022/12/19 22:51
- Ruby VBA 2 2023/01/14 14:14
- C言語・C++・C# このプログラミングの問題を教えて欲しいです。 キーボードから整数kを入力し、kが配列aの中に何個存在 2 2022/12/19 22:50
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
python エラー
-
エクセルのエラーメッセージ「4...
-
コンパイルできません。
-
ビルド失敗 指定されたファイ...
-
Visual Studioのstrcpy_sについて
-
Excelのエラーで困ってます。
-
C2146を回避するにはどうしたら...
-
LPCWSTRとchar
-
HEWを使用しているのですが、こ...
-
EXEで実行すると発生するORA:06...
-
適切な変換関数が存在しない???
-
VisualC++でエラーが大量に
-
WindowsからLinuxへの移植
-
レコードセットをcloseする所で...
-
キーの自動入力
-
fortranでプログラムを実行する...
-
error C2143: 構文エラー の対処法
-
DLL関数を使ったプログラム
-
visual C++ でビルドの中止がで...
-
IOCTL_CDROM_RAW_RAEDで生デー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
python エラー
-
エクセルのエラーメッセージ「4...
-
Excelのエラーで困ってます。
-
バッチからsqlplusの接続エラー...
-
visual C++ でビルドの中止がで...
-
適切な変換関数が存在しない???
-
VB2008で定数に色の設定をした...
-
デバッグ中のエラーのことで教...
-
fortranでプログラムを実行する...
-
RightとLeft関数のライブ...
-
ビルド失敗 指定されたファイ...
-
Handlesについて
-
HEWを使用しているのですが、こ...
-
DLL関数を使ったプログラム
-
キーの自動入力
-
Visual Studioのstrcpy_sについて
-
コンパイルできません。
-
multiple definitionというエラー
-
ACCESSのDate関数のエラー表示...
-
WindowsからLinuxへの移植
おすすめ情報